7

我通过关键跟踪器 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)

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

4

1 回答 1

10

没有真正的CEST时区。根据您所在的地区使用Europe/Paris,Europe/BerlinEurope/Prague(或另一个):

>>> 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>)
于 2012-06-06T12:15:03.920 回答