Korekta czasu dla oszczędności światła dziennego na szynach DateTime.parse

Dodajemy tylko milion pytań dotyczących strefy czasowej i problemów z DST.

Mam formularz z oddzielnymi polami daty i godziny, które łączę, aby utworzyć DateTime w ten sposób

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

Jeśli wypełnię formularz z 21 sierpnia 2012 r. I 15:00, to są to wartości, które widzę po ponownym załadowaniu formularza. Jeśli następnie spojrzę na mój atrybut start_time w moim modelu, jest on poprawnie ustawiony naTue, 21 Aug 2012 15:00:00 EST +10:00.

Problem, który mam, pojawia się, gdy korzystam z daty w tym roku po rozpoczęciu oszczędzania na świetle dziennym (jestem w Australii). Jeśli korzystam z 21 grudnia 2012 i 15:00, sprawdź start_time widzęFri, 21 Dec 2012 16:00:00 EST +11:00.

Moja interpretacja problemu polega na tym, że data jest zapisywana w mojej bieżącej strefie czasowej (+10: 00), ponieważ to właśnie powiedziałem DateTime.parse. Jednak gdy wartość zostanie zwrócona, Railsy sprawdzają datę i mówią „hej, to jest czas letni w grudniu” i zwracają czas w strefie czasowej +11: 00.

Chcę przekazać DateTime.parse, aby zapisać czas w strefie czasowej +11: 00, jeśli działa czas letni. Przejście Time.zone do mojego ciągu nie pozwala na to. Czy jest to prosty sposób? Widzę sposoby na zrobienie tego za pomocą Time # dst? ale podejrzewam, że to stworzy naprawdę brzydki, zawiły kod. Myślałem, że może być zbudowany tak, że go brakuje.

questionAnswers(5)

yourAnswerToTheQuestion