我应该在Rails应用程序中使用哪两个:
DateTime.now or Time.now
在申请中使用两者有什么危害吗?
在上述(now
)示例的情况下,两者之间是否会有任何差异? (在我目前的系统中,它们都显示相同的时间)
答案 0 :(得分:39)
使用 (Date)Time.current
代替 (Date)Time.now
Rails扩展了Time
和DateTime
个对象,并包含current
属性,用于检索Rails环境设置的时间(默认= UTC),而不是服务器时间(可能是任何事情)。
这很关键 - 除了在用户输入或显示的时区之间进行转换时,您应始终使用UTC时间,但默认情况下许多生产系统不 UTC。 (例如Heroku设置为PST(GMT -8))
参见文章here
答案 1 :(得分:11)
参考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"
答案 2 :(得分:6)
如果您想在应用程序的时区中获取时间,则需要致电Time.zone.now
,这就是我通常使用的内容。
Time.now
和DateTime.now
都将返回系统时间,通常设置为UTC。