编程语言
首页 > 编程语言> > python – 使用时区信息正确解析日期字符串

python – 使用时区信息正确解析日期字符串

作者:互联网

我通过关键跟踪器API收到这样的格式化日期字符串:“2012/06/05 17:42:29 CEST”

我想将此字符串转换为UTC日期时间对象,看起来python-dateutil无法识别该时区,pytz也不知道它.

我担心我最好的选择是用CET替换字符串中的CEST,但这感觉非常错误.有没有其他方法可以将夏令时字符串解析为我找不到的UTC日期时间对象?

pytz.timezone('CEST')
# -> pytz.exceptions.UnknownTimeZoneError: 'CEST'
dateutil.parser.parse("2012/06/05 17:42:29 CEST")
# -> datetime.datetime(2012, 6, 5, 17, 42, 29)

编辑:再次考虑它减去一个小时是完全错误的,因为相应的时区目前也在夏季时间,解析的问题仍然存在

解决方法:

没有真正的CEST时区.根据您所在地区使用欧洲/巴黎,欧洲/柏林或欧洲/布拉格(或其他):

>>> pytz.country_timezones('de')
[u'Europe/Berlin']

>>> pytz.country_timezones('fr')
[u'Europe/Paris']

它们(目前)相同,并且在夏季都指CEST.

>>> dateutil.parser.parse("2012/06/05 17:42:29 CEST").astimezone(pytz.utc)
datetime.datetime(2012, 6, 5, 15, 42, 29, tzinfo=<UTC>)

标签:python,timezone,datetime,datetime-parsing
来源: https://codeday.me/bug/20190620/1249421.html