代码之家  ›  专栏  ›  技术社区  ›  CaptainEddy

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

  •  0
  • CaptainEddy  · 技术社区  · 2 年前

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

    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'
    

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

    3 回复  |  直到 2 年前
        1
  •  2
  •   Iain Shelvington    2 年前

    使用 %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'))
    
        2
  •  0
  •   Barmar Eduardo López    2 年前

    此时需要格式运算符,而不是 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')
    
        3
  •  0
  •   Jhanzaib Humayun    2 年前

    这应该是有效的:

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