2

当我在 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 
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]"

在 32 位 Ubuntu 10.04 上:

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]"

请提供您的操作系统版本和位级别以获得更多帮助。

于 2011-05-06T15:43:51.127 回答