時,我一直工作在解析字符串和我有一個已經造成的問題對我來說是測試用例。使用strptime解析日期/時間字符串時,夏時制不計算在內。據我所知,這是一個錯誤。我找不到有關此錯誤的任何文檔。這是Rails控制檯中的一個測試用例。這是ruby 1.9.3-p215和Rails 3.2.2。Rails的夏令時沒有考慮使用DateTime.strptime
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
正如你所看到的,我必須轉換爲UTC,然後返回到時區獲得DST進行正確解釋,但隨後的時間移動一個每小時很好,所以這不是我分析出的字符串。是否有人對此錯誤採取瞭解決方法,或者將日期+時間+時區可靠地解析爲日期時間對象恰當表示的日期時間對象?謝謝。
編輯: 好吧,我找到了一個解決辦法,但我不知道它是多麼強勁。
下面是一個例子:
ActiveSupport::TimeZone["Central Time (US & Canada)"].parse "2012-04-15 10:00"
這解析日期/時間字符串到正確的時區。我不確定解析方法對於處理這個有多強大,所以我想看看是否有更好的解決方法,但這是迄今爲止我的方法。
您可以像這樣設置慢性時區 Chronic.time_class = ActiveSupport :: TimeZone ['Mexico City'] – 2015-03-21 01:05:54