我已经用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中正常工作的任何建议都会非常感激!
答案 0 :(得分:3)
答案 1 :(得分:1)
返回的字符串似乎非常破碎:i)年份是2126年,ii)年份和月份之间有两个连字符,ii)当天是10618.
你在哪个平台上?你在哪个时区(这个例子暗示你在GMT)?
我使用的是WinXP,Ruby 1.8.6-p111在所有三种情况下都给出了相同的结果。
编辑:我在Ruby源代码中进行了一些挖掘(Date
,DateTime
中定义了lib/date.rb
。
事实证明,Date.today
在内部调用了Time.now.__send__(:to_date)...
,因此您可以尝试在Time.now.__send__(:to_date).to_s
中调用irb
并将输出与Time.now.to_s
进行比较,以便缩小问题范围。
Date.today
也会在创建的.new_start(...)
个实例上调用Date
,所以可能会在你的情况下弄乱日期。
答案 2 :(得分:-1)
我不确定你是在本地运行还是在服务器上运行,但我认为ruby可能会占用服务器日期,这可能与你的时区不同,因此看起来不同。