没有时间的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.nowDateTime.currentDateTime.now.in_time_zoneDateTime.now.utcDateTime.now.getlocalDateTime.now.iso8601DateTime.now.jisx0301DateTime.now.rfc3339DateTime.now.to_iDateTime.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.