pytz
库,因为我正在进行的项目需要介绍依赖项。如果我可以在没有第三方库的情况下实现这一点,我会更加高兴。当日期处于夏令时时,我无法将日期在中欧时间和协调世界时之间转换。它比我预期的早一个小时:
>>> 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比协调世界时提前一个小时,在夏令时期间比协调世界时提前两个小时。因此,我预计在中欧地区的午夏时节,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)
zoneinfo
也可以通过backports.zoneinfo在Python <3.9中使用,并且有一个用于pytz
的弃用shim。 - FObersteiner