2

为什么当我将时间戳转换为秒时,ruby 不减去 Timezone?

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 应该比 a.utc.to_i 高 3 小时(10800 秒),我需要它,我该怎么做?

4

2 回答 2

2

Time这是关于Ruby的事情。Time.now.to_f为您提供自 Epoch 以来的秒数。有关 Epoch 的更多信息,请访问 wikipedia

要获得两个对象之间的差异Time,您应该将它们减去以获得difference,如docs 中所述

要获得两个具有相同时间但具有不同 UTC 偏移量的对象之间的差异(如您的问题所示),只需使用该utc_offset方法。

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

difference = (b.utc_offset - a.utc_offset)/60/60
#=> 5
于 2013-09-27T14:04:30.973 回答
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
于 2013-09-27T14:04:55.737 回答