Railsy: jak analizować ciąg daty i czasu w określonej strefie czasowej

Używam Rails 3.2 i ruby ​​1.9.3 na Debianie. Mam aplikację, która zbiera datę, godzinę i strefę czasową w postaci łańcuchów za pomocą formularza HTML. Coś takiego:

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

Chciałbym przeanalizować te 3 elementy w jedną datę, która jest zapisywana w mojej bazie danych jako UTC, co w tym przypadku dodałoby 7 godzin do czasu rozpoczęcia, gdy znajdzie się w strefie czasowej UTC. Tak więc zapisany czas będzie wynosił 17:00, gdy znajdzie się w DB jako UTC zamiast odebranego czasu centralnego.

Próbowałem czegoś takiego, aby przeanalizować datę:

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

Jednak nie mogę włączyć strefy czasowej do czasu wynikowego za pomocą% Z. Albo nie analizuje, albo czas jest interpretowany jako czas UTC, a nie czas centralny. Moje pytanie brzmi: jak zmusić ciąg daty do określonej strefy czasowej bez zmiany wartości rzeczywistej daty / godziny zapisanej. Chciałbym móc analizować łańcuch do obiektu daty / godziny, który zawiera poprawną strefę czasowąw tym czasie aby przyszłe konwersje stref czasowych były dokładne. Sprawdziłem wszystko i nie mogę znaleźć sposobu, aby to zrobić. To dziwne, ponieważ wydaje się, że coś wspólnego z datami wprowadzanymi z formularzy HTML. Dziękuję za pomoc.

questionAnswers(7)

yourAnswerToTheQuestion