8

RVMでruby-1.8.6-p383をインストールしました。システムルビーは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

ルビー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でDateTimeを正しく動作させる方法についてのアドバイスをいただければ幸いです。

4

3 に答える 3

3

私は同様の問題に遭遇し、3つの異なる解決策を得ましたが、そのうちの2つを試しましたが、両方とも機能しました。ここからそれについてもっと読む:

http://www.ruby-forum.com/topic/210647

ジャルモ

于 2010-05-31T08:26:17.020 に答える
1

返された文字列は非常に壊れているようです。i)年は2126、ii)年と月の間に2つのハイフンがあり、ii)日は10618です。

どのプラットフォームを使用していますか?あなたはどのタイムゾーンにいますか(例はあなたがGMTにいることを意味します)?

私はWinXPを使用していますが、Ruby1.8.6-p111では3つのケースすべてで同じ結果が得られます。

編集:私はRubyのソースコードを掘り下げました(DateそしてDateTimeで定義されていlib/date.rbます)。

Date.today内部で呼び出しが発生することが判明したため、問題を絞り込むために、Time.now.__send__(:to_date)...呼び出して出力を比較してみてTime.now.__send__(:to_date).to_sくださいirbTime.now.to_s

Date.today.new_start(...)また、作成されたインスタンスを呼び出すDateため、ケースの日付が混乱している可能性があります。

于 2010-01-28T13:57:43.390 に答える
-1

ローカルで実行しているのかサーバー上で実行しているのかはわかりませんが、rubyがサーバーの日付を取得している可能性があります。これは、現在とは異なるタイムゾーンにあるため、表示が異なる可能性があります。

于 2010-04-30T19:51:10.643 に答える