2

Ruby 1.9.2 で 1919 年 9 月 1 日より前の日付の時刻オブジェクトを作成すると、タイム ゾーンがシステム ゾーン (+0100) または UTC ではなく +0014 に設定されます。問題が早い日付であることを発見したので、私が望むのは日付のない時間だけなので、最近の日付を使用します。しかし、なぜこれが起こるのか誰かが知っていますか?

ruby-1.9.2-p0 :034 > Time.new(1919,9,1,0,0,0)
=> 1919-09-01 00:46:24 +0100 
ruby-1.9.2-p0 :035 > Time.new(1919,8,31,23,59,59)
=> 1919-08-31 23:59:59 +0014 
ruby-1.9.2-p0 :036 > Time.new(1919,8,31,1,0,0)
=> 1919-08-31 01:00:00 +0014 
4

1 に答える 1

0

他の人がコメントしていることを反映する: あなたが提供した情報でここに再現可能な問題はありません. Windows 7、64 ビットの場合:

irb(main):001:0> Time.new(1919,8,31,23,59,59)
#=> 1919-08-31 23:59:59 -0600

irb(main):002:0> RUBY_DESCRIPTION
#=> "ruby 1.9.2p180 (2011-02-18) [i386-mingw32]"

Ubuntu 10.04、32 ビットの場合:

ruby-1.9.2-p136 :001 > Time.new(1919,8,31,23,59,59)
#=> 1919-08-31 23:59:59 -0600

ruby-1.9.2-p136 :002 > RUBY_DESCRIPTION
#=> "ruby 1.9.2p136 (2010-12-25) [i686-linux]"

...そしてあなたの正確なパッチレベルで:

ruby-1.9.2-p0 :001 > Time.new(1919,8,31,23,59,59)
#=> 1919-08-31 23:59:59 -0600

ruby-1.9.2-p0 :002 > RUBY_DESCRIPTION
#=> "ruby 1.9.2p0 (2010-08-18) [i686-linux]"

さらにサポートが必要な場合は、OS のバージョンとビット レベルをお知らせください。

于 2011-05-06T15:43:51.127 に答える