Schienen: Wie man Datum-Zeit-Zeichenfolge in eine bestimmte Zeitzone parst

Ich benutze Rails 3.2 und Ruby 1.9.3 unter Debian. Ich habe eine App, die Datum, Uhrzeit und Zeitzone in Form von Zeichenfolgen über ein HTML-Formular sammelt. Etwas wie das:

<code>start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
</code>

Was ich tun möchte, ist, diese 3 Elemente in einem einzigen Datum zu analysieren, das in meiner Datenbank als UTC gespeichert wird. In diesem Fall würde dies die Startzeit um 7 Stunden verlängern, sobald es sich in der UTC-Zeitzone befindet. Die gespeicherte Zeit wäre also 17:00 Uhr, sobald sie in der Datenbank als UTC-Zeit statt der empfangenen Zentralzeit gespeichert ist.

Ich habe so etwas versucht, um das Datum zu analysieren:

<code>ActiveSupport::TimeZone[timezone].at DateTime.strptime("{ 2012-04-09 20:00:00 }", "{ %Y-%m-%d %H:%M:%S }").to_i
</code>

Ich kann die Zeitzone jedoch nicht mit% Z in die resultierende Zeit integrieren. Entweder wird die Zeit nicht analysiert oder als UTC-Zeit und nicht als Zentralzeit interpretiert. Meine Frage ist also, wie man eine Datumszeichenfolge in eine bestimmte Zeitzone zwingt, ohne den Wert des tatsächlich gespeicherten Datums / der Uhrzeit zu ändern. Ich möchte in der Lage sein, die Zeichenfolge in ein Datums- / Zeitobjekt zu analysieren, das die richtige Zeitzone enthältzu dieser Zeit damit zukünftige Zeitzonenumrechnungen korrekt sind. Ich habe überall nachgesehen und kann keinen Weg finden, dies zu tun. Es ist seltsam, da dies mit Daten zu tun scheint, die aus HTML-Formularen eingegeben wurden. Vielen Dank für jede Hilfe.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage