这两个我应该用我的Rails应用程序:DateTime.now或Time.now?
DateTime.now or Time.now
有没有在这两个应用程序中使用任何危害?
在以上(now
)示例的情况下,两者之间是否会有任何差异? (在我目前的系统,他们都显示相同的时间)
这两个我应该用我的Rails应用程序:DateTime.now或Time.now?
DateTime.now or Time.now
有没有在这两个应用程序中使用任何危害?
在以上(now
)示例的情况下,两者之间是否会有任何差异? (在我目前的系统,他们都显示相同的时间)
在参考Time.now
(不DateTime.now
):
创建的对象将使用您的系统时钟所能达到的分辨率来创建,因此可能包括分数秒。
a = Time.new #=> Wed Apr 09 08:56:03 CDT 2003
b = Time.new #=> Wed Apr 09 08:56:03 CDT 2003
a == b #=> false
"%.6f" % a.to_f #=> "1049896563.230740"
"%.6f" % b.to_f #=> "1049896563.231466"
是的,如果你不指望它们,分数秒可能看起来很糟糕,但如果你想通过转换为秒的整数值,或者通过使用'strftime'来格式化它们,同时保持它们为任何时间戳数学。 – 2011-04-08 23:20:42
我正在使用Rails 3,DateTime也有小数秒。这种差异只存在于Rails 2中吗? – 2011-08-15 14:39:57
如果你想在应用程序的时区的时间,你就需要调用Time.zone.now
,所以这就是我通常使用。
Time.now
和DateTime.now
都会在系统时间返回一个时间,通常设置为UTC。
按照Yarin的建议,使用(Date)[Time.current](https://github.com/rails/rails/blob/ffc273577a795bb41068bfc2a1bb575ec51a9712/activesupport/lib/active_support/core_ext/time/calculations.rb#L29)。如果Time.zone设置,Time.current将返回Time.zone.now,否则返回Time.now。 – jayeff 2014-07-29 09:48:53
使用(Date)Time.current
代替(Date)Time.now
滑轨延伸Time
和DateTime
对象,并且包括current
属性检索Rails环境被设置为(默认= UTC)的时间,而不是在服务器时间(可能是任何事情)。
这很关键 - 除非在用户输入或显示的时区之间进行转换,否则应该始终以UTC时间工作,但许多生产系统默认为而非 UTC。 (例如Heroku的设置为PST(GMT -8))
见第here
Time.now.utc也解决了它,不是吗? – user2503775 2013-09-15 10:51:49
@ user2503775 - 是的,你可以使用它,但如果出于某种原因*你确实想在非UTC时区工作(我认为这从来不是一个好主意),至少你可以通过改变切换环境变量而不必更改代码中的一堆值。 – Yarin 2013-09-15 12:03:40
@Yarin使用Time.zone.now代替Time.current而不是Time.now – ajahongir 2013-09-17 18:11:37
的ActiveRecord和其他奥姆斯像DateTime和日期为他们的数据库记录。我认为这是因为Date比Time有更大的范围。时间是基于操作系统的时间概念,并且如果我记得,它与时区信息的整合更好。你可能想看看['home_run'](https://github.com/jeremyevans/home_run)作为一个替代品,它应该快得多。 – 2011-04-08 23:22:44