如何將Feb 25 2010, 16:19:20 CET
形式的日期時間字符串轉換爲unix時期?解析時區縮寫爲UTC
目前我最好的辦法是使用time.strptime()
是這樣的:
def to_unixepoch(s):
# ignore the time zone in strptime
a = s.split()
b = time.strptime(" ".join(a[:-1]) + " UTC", "%b %d %Y, %H:%M:%S %Z")
# this puts the time_tuple(UTC+TZ) to unixepoch(UTC+TZ+LOCALTIME)
c = int(time.mktime(b))
# UTC+TZ
c -= time.timezone
# UTC
c -= {"CET": 3600, "CEST": 2 * 3600}[a[-1]]
return c
我從其他的問題看,這可能是可以使用calendar.timegm()
,並pytz
等等來簡化這一點,但這些不處理縮短的時區。
我想要一個解決方案,需要最少的多餘的庫,我喜歡儘可能保持標準庫。
是的,我結束了我自己的任意時區縮寫查找。我不認爲一般情況是可以解決的,因爲在全球範圍內有多個具有相同縮寫的時區。 – bobince 2010-02-25 16:28:46
@bobince:好的,知道我不會錯過什麼。我發現這個令人敬畏的鏈接,這讓我感覺上面的方法更安全:http://www.timeanddate.com/library/abbreviations/timezones/ – 2010-02-26 01:07:21