2013-09-27 88 views
2

爲什麼在我將時間戳轉換爲秒時,紅寶石不會減去時區?如何將時間戳轉換爲帶有時區的秒數

1.9.3-p429 :008 > a = Time.now() 
    => 2013-09-27 16:23:17 +0300 
1.9.3-p429 :011 > a.utc 
    => 2013-09-27 13:23:17 UTC 
1.9.3-p429 :009 > a.to_i 
    => 1380288197 
1.9.3-p429 :010 > a.utc.to_i 
    => 1380288197 

a.to_i應該是3小時(10800秒)比a.utc.to_i高,我需要它,我該怎麼辦呢?

回答

2

這是關於Ruby中的Time的事情。 Time.now.to_f給你number of seconds since the Epoch.更多信息有關Epoch是available on wikipedia

拿到兩個Time對象之間的差別,你應該只減去他們拿到difference,爲noted in the docs

要獲得兩個持有同一時間但具有不同UTC偏移量的對象(如您的問題所示)之間的差異,只需使用utc_offset方法即可。

a = Time.now 
b = Time.now.utc 

difference = (b.utc_offset - a.utc_offset)/60/60 
#=> 5 
+0

是[時間#utc_offset(http://www.ruby-doc.org/core- 2.0.0/Time.html#method-i-utc_offset)是我們需要考慮的一個。 –

0

的時間並沒有改變,它只是調整到不同的時區:

a = Time.now #=> 2013-09-27 16:01:51 +0200 
b = a.dup.utc #=> 2013-09-27 14:01:51 UTC 

a == b   #=> true 
相關問題