這兩個我應該用我的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