我不想使用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: –