這裏就是我想要做的事:1小時關閉時轉換RFC 2822日期爲datetime
>>> from email.utils import parsedate
>>> tup = parsedate("Fri, 22 Jan 2016 10:15:00 GMT")
>>> tup
(2016, 1, 22, 10, 15, 0, 0, 1, -1)
>>> import datetime
>>> import time
>>> timestamp = time.mktime(tup)
>>> timestamp
1453454100.0
>>> datetime.datetime.utcfromtimestamp(timestamp)
datetime.datetime(2016, 1, 22, 9, 15)
我使用的email.utils.parsedate
函數解析RFC 2822日期到struct_time。這看起來是正確的,小時部分是10
。然後,我使用time.mktime
將其轉換爲時間戳,然後使用datetime.utcfromtimestamp
嘗試獲取UTC日期時間,但出於某種奇怪的原因,日期時間中的小時數爲9
。我真的不明白爲什麼。
我在UTC + 1,所以有可能轉換到當地時間發生的地方,但我不知道在哪裏。
什麼是您的時區? – Psytho
我在UTC + 1。使用parsedate_tz也不起作用。它返回一個時區偏移量作爲元組中的一個額外的元素,但不會影響元組的其餘部分。所以有可能轉換到當地時間發生,但我不知道在哪裏。 – bigblind
也許'email.parsedate'函數將'GMT'作爲時區處理,並且包含夏令時?一般來說,我會避免混合像你這裏做的幾個不同的模塊(電子郵件,時間和日期時間)。 'pytz'是處理時間和時區的非常好的軟件包。 –