爲什麼這個表達式返回false?Ruby時間操作涉及utc
(Time.now - 10.hours).utc == Time.now.utc - 10.hours
爲什麼會計算結果的差異?哪種方法是正確的?
爲什麼這個表達式返回false?Ruby時間操作涉及utc
(Time.now - 10.hours).utc == Time.now.utc - 10.hours
爲什麼會計算結果的差異?哪種方法是正確的?
因爲它們不一樣。 Rubys Time.now
跟蹤時間到幾分之一秒,#to_s
的輸出只是不顯示。
>> Time.now == Time.now
=> false
>> Time.now.to_i == Time.now.to_i
=> true
>> Time.now.to_f == Time.now.to_f
=> false
檢查出here的Time
類的文檔。
表達式是等價的,但按順序調用時,不會返回相同的結果。注:
Time.now == Time.now #=> false
Time.now - Time.now #=> Some really small negative number
如果連續撥打兩次Time.now
,第二屆一個第一後發生,對不對?即使這是一個非常後的短時間內。
我不會說任何一種形式都更正確。如果您存儲Time.now
並運行相同的比較,則會得到預期的結果。
t = Time.now
t.utc = 10.hours == (t - 10.hours).utC#=> true
很好的答案。感謝您抽出寶貴的時間。 – keruilin
(Time.now - 10.hours).utc.to_s == (Time.now.utc - 10.hours).to_s ==> true
(Time.now - 10.hours).utc - (Time.now.utc - 10.hours) ==> a small, non-zero
number. IE -1.3e-05
請注意,a_time.to_s與a_time.inspect相同,它只顯示時間到最近的秒。但內部分辨率比一秒小得多。
當然,如果你運行足夠多的時間,'Time.now.to_i == Time.now.to_i'並不總是如此。 – numbers1311407
太好了。感謝您的迴應。這就說得通了。我最初的反應是它與系統耗用時間有關,但想要問問並確定。 – keruilin