Rails 将 datetimepicker 日期字符串转换为 datetime 数据类型

Rails convert datetimepicker date string to datetime data type

我正在 Rails 上使用 Ruby 构建待办事项列表应用程序,我的 Task 资源中的每个项目都有一个 deadline 属性,该属性是使用gem 'datetimepicker'.

'datetimepicker' gem 将日期作为 string 数据类型提取,格式为 "12/13/2012""%m/%d/%Y".

我正在尝试按 deadline 属性中的日值对 task 元素进行分组。我找到了一篇关于如何执行此操作的文章(尽管我认为它包含一个错字):

https://ariejan.net/2007/01/12/rails-group-results-by-week-using-group_by/

但是,我宁愿在 tasks_controller 中进行工作,也不愿在 task 模型中进行工作(也许该模型是更简洁的方法?我是一个 nuby 并且乐于接受建议这个)。

我找到了另一篇关于 group_by 方法的文章,它演示了一个大概的过程:

http://railscasts.com/episodes/29-group-by-month?view=asciicast

这篇文章在我看来更简洁了一些。它要求我使用 .beginng_of_day 方法来平等对待所有 taskdeadline 中具有相同日期值的项目。

我 运行 遇到了这两种方法的问题,即它们将 deadline 视为 datetime 数据类型。我想使用 .to_datetime 方法转换 task.deadline,但是 'datetimepicker' gem 以完全错误的方式格式化 deadline string .to_datetime 转换为:

"12/13/2012".to_datetime # => ArgumentError: invalid date

see => apidock[dot]com[slash]rails[slash]String[slash]to_datetime

我找到了一篇类似的文章,建议使用 .strptime.strftime 方法重新格式化 deadline 属性,但我不知道如何做到这一点deadlinestring 而不是 datetime:

see => Whosebug[dot]com[slash]questions[slash]16296885[slash]how-to-convert-datetime-picker-value-to-datetime-in- ruby-上-rails

有人可以帮助我进行这种转换,或者建议一种不同的(最好更简单!)按天对任务进行分组的策略吗?

感谢您的帮助,对于损坏的链接深表歉意;我没有足够的声望点来嵌入超过 2 个。

你真的不想约会吗?不是日期时间?

在任何情况下你都可以使用

Date.strptime("12/13/2012", "%m/%d/%Y")
=> #<Date: 2012-12-13 ((2456275j,0s,0n),+0s,2299161j)>

DateTime.strptime("12/13/2012", "%m/%d/%Y")
=> #<DateTime: 2012-12-13T00:00:00+00:00 ((2456275j,0s,0n),+0s,2299161j)>