Falsches Datum mit Rubin Date.today und DateTime.now
Frage
Ich habe Rubin-1.8.6-P383 mit RVM installiert. System Rubin ist 1.9.1_p378-1
Ich bin das falsche Datum von Date.today und DateTime.now bekommen, wenn Rubin mit 1.8 .. Während Time.now korrekt ist:
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
Alles ist gut, wenn ich wechsle 1,9 bis rubin:
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
Alle Ratschläge, wie Datetime Arbeit in Ruby richtig zu bekommen 1,8 würden die meisten geschätzt werden!
Lösung
Ich stolperte über ähnliches Problem und bekam 3 verschiedene Lösungen, die ich versuchte, 2 und beide arbeiteten. Lesen Sie mehr über sie hier:
http://www.ruby-forum.com/topic/210647
Jarmo
Andere Tipps
Der zurückgegebene String scheint sehr gebrochen werden: i.) Das Jahr 2126 ist, ii) es gibt zwei Bindestriche zwischen dem Jahr und dem Monat, und ii) dem Tag 10618
Welche Plattform sind Sie? Was Zeitzone sind Sie auf (das Beispiel bedeutet, dass Sie in GMT sind)?
Ich bin auf WinXP und Ruby 1.8.6-p111 das gleiche Ergebnis in allen drei Fällen.
Edit: Ich habe einige graben in der Code-Ruby-Quelle (Date
und DateTime
sind in lib/date.rb
definiert).
Es stellt sich heraus, dass Date.today
Anrufe intern Time.now.__send__(:to_date)...
, vielleicht sollten Sie versuchen, Time.now.__send__(:to_date).to_s
in irb
aufrufen und die Ausgabe an Time.now.to_s
, um das Problem zu verengen vergleichen.
Date.today
auch nennt .new_start(...)
auf die erstellte Date
Instanz so vielleicht ist das das Datum in Ihrem Fall vermasselt.
Ich bin nicht sicher, wenn Sie Dinge lokal ausgeführt oder auf dem Server, aber ich denke, Rubin könnte das Server-Datum nehmen, die in einer anderen Zeitzone sein können, als Sie sind, und so unterschiedlich erscheinen.