Czas letni nie jest uwzględniany przy korzystaniu z DateTime.strptime

Pracowałem nad analizowaniem ciągów znaków i mam przypadek testowy, który powodował dla mnie problemy. Podczas analizowania łańcucha daty / czasu za pomocą strptime czas letni nie jest uwzględniany. O ile wiem, jest to błąd. Nie mogę znaleźć żadnych dokumentów w tym błędzie. Oto przypadek testowy w konsoli Rails. To jest ruby ​​1.9.3-p215 i Rails 3.2.2.

<code>1.9.3-p125 :049 >   dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z")  
=> Sun, 15 Apr 2012 10:00:00 -0600  
1.9.3-p125 :050 > dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z").utc  
=> Sun, 15 Apr 2012 16:00:00 +0000  
1.9.3-p125 :051 > dt = DateTime.strptime("2012-04-15 10:00 Central Time (US & Canada)", "%Y-%m-%d %H:%M %Z").utc.in_time_zone("Central Time (US & Canada)")  
=> Sun, 15 Apr 2012 11:00:00 CDT -05:00  
</code>

Jak widać, muszę przekonwertować na utc, a następnie z powrotem na strefę czasową, aby poprawnie zinterpretować DST, ale wtedy czas jest również przesunięty o jedną godzinę, więc to nie jest to, co analizowałem z ciągu. Czy ktoś ma obejście tego błędu lub bardziej solidny sposób analizowania daty i czasu + strefy czasowej niezawodnie w obiekcie DateTime, w którym czas letni jest odpowiednio reprezentowany? Dziękuję Ci.

Edytuj: Ok, znalazłem obejście, chociaż nie jestem pewien, jak bardzo jest solidny.

Oto przykład:

<code>ActiveSupport::TimeZone["Central Time (US & Canada)"].parse "2012-04-15 10:00"  
</code>

Spowoduje to przeanalizowanie ciągu daty / godziny w prawidłowej strefie czasowej. Nie jestem pewien, jak solidna jest metoda analizowania tego problemu, więc chciałbym sprawdzić, czy istnieje lepsze obejście, ale jest to moja dotychczasowa metoda.

questionAnswers(2)

yourAnswerToTheQuestion