Ich stieß auf dieses Problem beim Testen einer Rails-App auf zwei verschiedenen Staging-Servern in verschiedenen Zeitzonen (PDT und CDT) bereitgestellt. Beide Server haben Rails, die die Standard-UTC config.time_zone verwenden. Abgesehen davon, dass die Konfiguration der Zeitzone anders ist, sind beide Uhren korrekt eingestellt.Rails Time.zone Parsing funktioniert nicht wie erwartet
Unten ist das, was ich in einer Schienen-Konsole sehen:
Auf dem Server, auf das System Zeitzone CDT ist,
Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 05:00:00 UTC +00:00
Auf dem Server, auf das System Zeitzone PDT,
Time.zone.parse("Mon May 28 2012 00:00:00 GMT-0700 (PDT)")
=> Mon, 28 May 2012 07:00:00 UTC +00:00
ist Die Zeichenfolge Mon May 28 2012 00:00:00 GMT-0700 (PDT)
ist ein beliebiger Datum-Uhrzeit-Wert, der von einem Client gesendet wird. Dies ist ein häufiges Szenario, wenn ein JavaScript-Date-Objekt über die Params-Sammlung von rails verwendet wird.
Warum sind die beiden Ergebnisse Time.zone.parse(identical_date_time_string)
unterschiedlich?
Wenn ich folgendes auf beiden Systemen ausführen, wird das Ergebnis korrekt:
"Mon May 28 2012 00:00:00 GMT-0700 (PDT)".to_time
=> 2012-05-28 07:00:00 UTC
Ich Schienen 3.2.3 mit Ruby 1.9.3-p125, auf Ubuntu läuft.
ein Problem gegen Schienen Eröffnet https://github.com/rails/rails/issues/5770 –
Managed Active :: Time-Zone patchen Datum Saiten des zu handhaben Format hier Sie können den Patch [hier] (https://github.com/rails/rails/issues/5770#issuecomment-5010661) in Kommentaren finden. –
Das ursprüngliche Problem ist jetzt in Schienen behoben, mit diesem commit https://github.com/rails/rails/commit/005d910624bbfa724b638426a000c8074d4201a2 –