使用 strptime() 解析“04.05.2003 00:00:00.000 GMT+0100”的正确格式字符串是什么?

What is the correct format string to parse "04.05.2003 00:00:00.000 GMT+0100" with strptime()?

我正在尝试将一个奇怪的格式字符串时间戳转换为日期时间。这是它的样子:

04.05.2003 00:00:00.000 GMT+0100

我正在尝试类似的方法,但它不匹配。我想我只是错过了结尾处 GMT 偏移量的表达式。

datetime.datetime.strptime('04.05.2003 00:00:00.000 GMT+0100','%d.%m.%Y HH:MM.SS.sss')

当然会吐出格式错误

ValueError: time data '04.05.2003 00:00:00.000 GMT+0100' does not match format '%d.%m.%Y HH:MM.SS.sss'

我需要在这里使用的格式字符串是什么?

使用%Z%z匹配时区。您使用了一些奇怪的格式来匹配时间,%H:%M:%S.%f 应该适合那个

datetime.datetime.strptime('04.05.2003 00:00:00.000 GMT+0100','%d.%m.%Y %H:%M:%S.%f %Z%z')
# Outputs: datetime.datetime(2003, 5, 4, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600), 'GMT'))

您需要时间格式运算符,而不是 HH:MM:SS,并且您需要时区格式运算符。时区偏移量的运算符是 %z.

datetime.datetime.strptime('04.05.2003 00:00:00.000 GMT+0100','%d.%m.%Y %h:%M:%s.%f GMT%z')

这应该有效:

datetime.datetime.strptime('04.05.2003 00:00:00.000 GMT+0100','%d.%m.%Y %H:%M:%S.%f GMT%z')