Korrektur der Zeit für die Sommerzeit in Schienen DateTime.parse

Hinzufügen zu den Millionen Fragen zu Zeitzonen- und Sommerzeitproblemen.

Ich habe ein Formular mit separaten Datums- und Zeitfeldern, die ich kombiniere, um so eine DateTime zu erstellen

start_time = DateTime.parse("#{parse_date(form_date)} #{form_start_time} #{Time.zone}")

Wenn ich mein Formular mit 21. August 2012 und 15:00 Uhr ausfülle, werden diese Werte beim erneuten Laden meines Formulars angezeigt. Wenn ich mir dann mein start_time-Attribut in meinem Modell anschaue, ist es korrekt auf gesetztTue, 21 Aug 2012 15:00:00 EST +10:00.

Das Problem, das ich habe, tritt auf, wenn ich ein Datum später in diesem Jahr benutze, sobald die Sommerzeit einsetzt (ich bin in Australien). Wenn ich den 21. Dezember 2012 und 15:00 Uhr benutze, sehe ich start_timeFri, 21 Dec 2012 16:00:00 EST +11:00.

Meine Interpretation des Problems ist, dass das Datum in meiner aktuellen Zeitzone (+10: 00) gespeichert wird, da ich DateTime.parse dazu aufgefordert habe. Wenn der Wert jedoch zurückgegeben wird, überprüft Rails das Datum und sagt "Hey, es ist Sommerzeit im Dezember" und gibt die Zeit in der Zeitzone +11: 00 zurück.

Ich möchte DateTime.parse anweisen, die Zeit in der Zeitzone +11: 00 zu speichern, wenn die Sommerzeit aktiviert ist. Wenn ich Time.zone eindeutig in meine Zeichenfolge übergebe, wird dies nicht erreicht. Gibt es eine einfache Möglichkeit, dies zu tun? Ich kann sehen, wie ich es mit Time # dst? aber ich vermute, dass dies einige wirklich hässliche verschlungenen Code erstellen wird. Ich dachte, es könnte einen eingebauten Weg geben, den ich vermisse.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage