ruby Date.today和DateTime.now的错误日期
我用RVM安装了ruby-1.8.6-p383。 系统ruby是1.9.1_p378-1
使用ruby 1.8时,我从Date.today和DateTime.now得到错误的日期。而Time.now是正确的:
irb(main):002:0> DateTime.now.to_s => "2126--1-10618T11:23:43+00:00" irb(main):004:0> Date.today.to_s => "2126--1-10618" irb(main):005:0> Time.now => Thu Jan 28 11:55:27 +0000 2010
如果我切换到ruby 1.9,一切都很好:
irb(main):003:0> DateTime.now.to_s => "2010-01-28T11:58:51+00:00" irb(main):004:0> Date.today.to_s => "2010-01-28" irb(main):005:0> Time.now => 2010-01-28 11:59:05 +0000
有关如何让DateTime在ruby 1.8中正常工作的任何建议都将非常感激!
返回的字符串似乎非常破碎:i)年份是2126年,ii)年份和月份之间有两个连字符,ii)当天是10618。
你在什么平台上? 你在哪个时区(这个例子暗示你在GMT)?
我在WinXP上,Ruby 1.8.6-p111在所有三种情况下都给出了相同的结果。
编辑:我在Ruby源代码中做了一些挖掘( Date
和DateTime
Date
在lib/date.rb
中定义)。
事实certificate, Date.today
内部调用Time.now.__send__(:to_date)...
,所以也许你应该尝试在irb
调用Time.now.__send__(:to_date).to_s
并将输出与Time.now.to_s
进行比较Time.now.to_s
以缩小问题范围。
Date.today
还在创建的Date
实例上调用.new_start(...)
,这样可能会弄乱你的日期。
我不确定你是在本地运行还是在服务器上运行,但我认为ruby可能会占用服务器日期,这可能与你的时区不同,因此看起来不同。