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

时间:2016-02-11 14:44:41

标签: ruby-on-rails ruby ruby-on-rails-3 datetime

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

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

我正在尝试按task属性中的日值对deadline元素进行分组。我发现了一篇关于如何做到这一点的文章(虽然我认为它包含一个拼写错误):

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

但是,我宁愿在tasks_controller而不是task模型中完成工作(可能模型是更清洁的方式吗?我是一个小小的,并且愿意接受建议这一点)。

我发现了另一篇关于group_by方法的文章,该文章展示了一个近似的过程:

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

这篇文章看起来对我来说有点清洁。它要求我使用.beginng_of_day方法同等地处理task中具有相同日期值的所有deadline项。

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

  

" 12/13/2012" .to_datetime#=> ArgumentError:无效日期

see => apidock [点] com [斜线]导轨[斜线]字符串[斜线] to_datetime

我发现了一篇类似的文章,建议使用deadline.strptime方法重新格式化.strftime属性,但我不知道该怎么做这是deadlinestring而不是datetime

的时候

see =>计算器[点] com [斜线]问题如何到转换-日期时间选取器值到日期时间合红宝石上导轨[斜线] 16296885 [斜线]

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

感谢您的帮助,并为破损的链接道歉;我还没有足够的声誉点来嵌入超过2个。

1 个答案:

答案 0 :(得分:1)

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

无论如何,你可以使用

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)>