当我在Ruby 1.9.2中使用早于1919年9月1日的日期创建时间对象时,时区设置为+0014而不是系统区域(+0100)或UTC。现在我发现问题是早期的日期,而且因为我想要的是没有约会的时间,我将使用最近的约会。但有人知道为什么会这样吗?
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
答案 0 :(得分: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]"
请提供您的操作系统版本和位级别以获得更多帮助。