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.