【问题标题】:Rails convert datetimepicker date string to datetime data typeRails 将 datetimepicker 日期字符串转换为 datetime 数据类型
【发布时间】:2016-02-11 14:44:40
【问题描述】:

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

这个'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 方法平等对待所有task 在其deadline 中具有相同日期值的项目。

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

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

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

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

参见 => stackoverflow[dot]com[slash]questions[slash]16296885[slash]how-to-convert-datetime-picker-value-to-datetime-in-ruby-on-rails

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

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

【问题讨论】:

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


    【解决方案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)>
    

    【讨论】:

    • 我可以使用日期并省略 '.beginning_of_day' 方法,但是我不会丢失任务中的时间数据吗?我想按日期对任务进行分组,但之后仍显示时间。
    • 如果任务列是日期时间,那么不,你不会。
    • 是的。我选择使用“日期时间”而不是“日期”,并使用“.to_date”方法按天分组。感谢您帮助重新格式化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多