我应该在Rails应用程序中使用以下两种:
DateTime.now or Time.now
在应用程序中同时使用这两种方法有什么害处吗?
在上述(now
(示例的情况下,两者之间是否存在任何差异?(在我当前的系统上,它们都显示相同的时间(
使用(Date)Time.current
,而不是(Date)Time.now
Rails扩展了Time
和DateTime
对象,并包括current
属性,用于检索Rails环境设置为(默认值=UTC(的时间,而不是服务器时间(可以是任何时间(。
这一点很关键-除了在时区之间转换以供用户输入或显示时,您应该始终在UTC时间工作-但许多生产系统默认情况下都是而不是UTC。(例如,Heroku设置为PST(GMT-8((
请参阅文章此处
参考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"
如果您想获得应用程序时区中的时间,您需要调用Time.zone.now
,所以这是我通常使用的。
Time.now
和DateTime.now
都将返回系统时间中的一个时间,该时间通常设置为UTC。