質問

私は、Rubyライブラリのいくつかのコードをリファクタリングしています。このコードは、日付パーサが含まれています。 「:05:00から010:2008-02-20T8 00」テストの一つは、この文字列解析することだったことになっている<のhref =「http://en.wikipedia.org/wiki/ISO_8601」のrel = "nofollowをnoreferrer"> ISO 8601 のます。

前のコードだろう実際に出力:「水曜日2月20日18時05分00秒UTC 2008」。 私の新しいコードは、その出力します。「水曜日2月20日夜04時05分00秒UTC 2008」

私の質問は:1が正しいものである。

RubyでTime.parseは、第1になります。しかし、再び、私は前のコードとテストはバグがあったことが100%を確認したい。

どちらが正しいですか? (多分別の言語でのライブラリで文字列を解析して - ?。私はルビーを知っている)

役に立ちましたか?

解決

正確なUTC時間は、UTCが所与の時間に10を追加取得するために時間グループは、ゾーン-10に0805を示す1805です。したがって、1805年以来1805は、それは同じ日だ未満2400です。

は、あなたのコードは1605を与えている場合、あなたはほぼ確実にタイムゾーンが太平洋標準時であることを起こるおり、-8をゾーニングし、誤って設定されています。

<時間> あなたの入力フォーマットを台無しにされたように、

なるほど、見えます。観察します:

irb(main):003:0> Time.parse("2008-02-20T8:05:00-010:00") 
=> Wed Feb 20 08:05:00 -0700 2008

私は、ゾーン内にあることが起こる-7ので、それは私のロケールにそれを合っています。しかし、

irb(main):004:0> t=Time.parse("2008-02-20T8:05:00-010:00")
=> Wed Feb 20 08:05:00 -0700 2008
irb(main):005:0> t
=> Wed Feb 20 08:05:00 -0700 2008
irb(main):006:0> t.getutc
=> Wed Feb 20 15:05:00 UTC 2008

私は予想外の結果を取得しています。今観察します:

irb(main):007:0> t=Time.parse("2008-02-20T8:05:00-10:00")
=> Wed Feb 20 11:05:00 -0700 2008
irb(main):008:0> t.getutc
=> Wed Feb 20 18:05:00 UTC 2008

の期待の結果があります。違いを見ます?二対最初の例:

irb(main):004:0> t=Time.parse("2008-02-20T8:05:00-010:00")
irb(main):007:0> t=Time.parse("2008-02-20T8:05:00-10:00")

私はそれが動作する、(確かにどちらか気付かなかった<全角>私はを)とヒューという音ます。

スプリアス余分な0アウトを取りました

他のヒント

私はこれはかなり古いですけど、私はちょうどそれを越え走っています。

私は、何かがどこかに値8との進の数として010を解釈していることを賭けるおそらくそれはTime.parse()の実装ではバグですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top