DateTime.now还是Time.now?

时间:2011-04-08 20:54:21

标签: ruby-on-rails ruby time timezone

我应该在Rails应用程序中使用哪两个:

DateTime.now or Time.now

在申请中使用两者有什么危害吗?

在上述(now)示例的情况下,两者之间是否会有任何差异? (在我目前的系统中,它们都显示相同的时间)

3 个答案:

答案 0 :(得分:39)

使用 (Date)Time.current 代替 (Date)Time.now

Rails扩展了TimeDateTime个对象,并包含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.nowDateTime.now都将返回系统时间,通常设置为UTC。

相关问题