2010-03-25 135 views
1

這是將UTC字符串轉換爲本地時間以允許夏時制的正確方法嗎?它看起來不錯給我,但你永遠不知道:)這是將UTC日期時間字符串轉換爲本地時間的正確方法嗎?

import time 
UTC_STRING = "2010-03-25 02:00:00" 
stamp = time.mktime(time.strptime(UTC_STRING,"%Y-%m-%d %H:%M:%S")) 
stamp -= time.timezone 
now = time.localtime() 
if now[8] == 1: 
    stamp += 60*60 
elif now[8] == -1: 
    stamp -= 60*60 
print 'UTC: ', time.gmtime(stamp) 
print 'Local: ', time.localtime(stamp) 

---來自新西蘭的結果(GMT + 12 DST = 1)---

UTC: (2010, 3, 25, 2, 0, 0, 3, 84, 0) 
Local: (2010, 3, 25, 15, 0, 0, 3, 84, 1) 

回答

5

時區相關的計算是不平凡的,並已經有好的圖書館,例如使用pytz,使用該功能,您可以自信地將任何時區轉換爲任何其他時區。用法就這麼簡單

>>> warsaw = pytz.timezone('Europe/Warsaw') 
>>> loc_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False) 
+2

我想掛一張海報,在那裏我工作閱讀「時鐘編程不是小事!」 – Escualo 2010-03-25 05:42:58

+0

我已經使用pytz進行了測試。我看到的唯一問題是,您需要知道標準時區字符串才能設置時區。然而,當跨越多個操作系統(尤其是Windows)(它必須具有定義時區的最奇怪的方式)以及經過幾個小時的測試後,這個代碼片段是我可以在整個平臺上始終如一地工作的唯一代碼片段。 – Steve 2010-03-26 02:15:47

+0

但這些是標準字符串,並且需要有方法來告訴哪個時區 – 2010-03-26 02:48:30

相關問題