没有时间的Rails DateTime.now


91

我需要使用DateTime.now来获取当前日期,并“剥离”时间。

例如,这显示了我不需要的内容:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

这说明什么,我做想要的:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


10
没有时间的DateTime是Date :)您是说Date.today吗?
— ajahongir 2013年

Answers:


173

您可以使用以下之一:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date

@sekmo starting_of_day是活动支持(轨道)的一部分。
— 伊戈尔·卡普科夫

3
最好不要在DateTime.now没有区域的情况下使用。这是更好地使用一个Time.zone.now,DateTime.current,DateTime.now.in_time_zone,DateTime.now.utc,DateTime.now.getlocal,DateTime.now.iso8601,DateTime.now.jisx0301,DateTime.now.rfc3339,DateTime.now.to_i,DateTime.now.to_f来代替。
— 布赖恩·迪马斯

谢谢@BryanDimas,您的评论有所帮助。如果更改ip到其他国家/地区,VPN会影响吗?
— Jenuel Ganawed

20

您需要的是函数strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")

如果将数据插入期望%Y-%m-%d %H:%M:%S格式化的数据的数据库中,这会导致严重的问题,因为它将反转月和日的值
— quetzaluz

我的建议是使用函数strftime,您必须据此自定义所使用的格式
— VP。


4

如果您愿意require 'active_support/core_ext',可以使用

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800

1
刚刚注意到ruby-on-rails标签,所以我想您很高兴需要ActiveSupport :)
— Jon M



0

弄清楚了。这有效:

DateTime.now.in_time_zone.midnight
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.