2

タイムスタンプを秒に変換するときに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 秒) 高くなければなりません。

4

2 に答える 2

2

TimeこれがRubyのことです。エポックからの秒数をTime.now.to_f示します。エポックについての詳細は、ウィキペディアで入手できます

2 つのオブジェクトの違いを取得するには、ドキュメントに記載されているようにTimeそれらを減算して を取得する必要があります。difference

同じ時間を保持しているが、UTC オフセットが異なる 2 つのオブジェクトの違いを取得するには (質問で見られるように)、単純に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 に答える