ルビーDate.todayとDateTime.nowと間違った日付
質問
私はRVMとルビー-1.8.6-P383をインストールしました。システムルビー1.9.1_p378-1
ルビー1.8を使用しているときTime.nowが正確であるのに対し、私は.. Date.todayとDateTime.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
私はルビー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
ルビー1.8で正しく動作するには日時を取得する方法上の任意のアドバイスが最もいただければ幸いです!
解決
私は同様の問題につまずいたと私は2を試してみましたが、両方働いた3種類のソリューションを、得ました。ここからそれについてもっと読むます:
http://www.ruby-forum.com/topic/210647する
Jarmo
他のヒント
返される文字列は非常に壊れているようです:ⅰ)年には、ⅱ)年と月の間に2つのハイフンがあります、そしてii)その日は10618で、2126です。
。どのようなプラットフォームあなたは上にありますか?どのような時間帯あなたがオンになっている(例えば、あなたがGMTにいることを意味する)?
私はWinXPの上だとRuby 1.8.6-P111は、3つのすべてのケースで同じ結果が得られる。
編集:私は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
を呼び出すので、多分のは、あなたのケースで日付をめちゃくちゃにすることをます。
イムがないことを確認、異なって表示されます。