如何使用ruby中的时区将时间戳转换为秒

时间:2013-09-27 13:51:44

标签: ruby ruby-on-rails-3 ruby-1.9.3

为什么ruby在将时间戳转换为秒时不会减去时区?

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秒),我需要它,我该怎么办?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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