我不想使用pytz
庫作爲我正在處理的項目需要文書工作來引入依賴關係。如果我能在沒有第三方圖書館的情況下實現這一目標,我會更開心。如何轉換CEST和UTC時區之間的日期時間對象
當日期處於夏時制時,我無法在CET和UTC之間轉換日期。這是不同的一個小時,我的期望:
>>> print from_cet_to_utc(year=2017, month=7, day=24, hour=10, minute=30)
2017-07-24T09:30Z
2017-07-24T08:30Z # expected
CET比UTC早一個小時,在夏季領先2小時。所以我希望在仲夏的中歐10:30時間到達8:30 UTC。
功能是:
from datetime import datetime, tzinfo, timedelta
def from_cet_to_utc(year, month, day, hour, minute):
cet = datetime(year, month, day, hour, minute, tzinfo=CET())
utc = cet.astimezone(tz=UTC())
return '{:%Y-%m-%d:T%H:%MZ}'.format(utc)
我用兩個時區信息對象:
class CET(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=1)
def dst(self, dt):
return timedelta(hours=2)
class UTC(tzinfo):
def utcoffset(self, dt):
return timedelta(0)
def dst(self, dt):
return timedelta(0)
爲了回答您關於pytz更新的觀點,它們是從IANA版本生成的。 IANA 2017b => pytz 2017.2。斯圖亞特主教維護他們,並將它們發佈到pypi這裏:https://pypi.python.org/pypi/pytz#downloads –
@MattJohnson我已經更新了這個信息的答案,非常感謝! – 2017-10-19 18:22:12
您和Sergey的答案都非常有幫助。我認爲你已經做了最多的事情來說服我,我真的應該把它交給專家。我們的解決方案是要求UTC時間作爲輸入,然後我們不需要轉換(c: –