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

如何在python时间戳文本中指定时区?

  •  0
  • WestCoastProjects  · 技术社区  · 1 年前

    以下工作:

     datetime.strptime("2023-11-15 01:02:03.123456", "%Y-%m-%d %H:%M:%S.%f"))
    

    Out[11]:datetime.datetime(2023,11,15,1,2,3,123456)

    但以下操作失败:

     datetime.strptime("2023-11-15 01:02:03.123456", "%Y-%m-%d %H:%M:%S.%f%Z"))
    

    ValueError:时间数据“2023-11-15 01:02:03.123456” 与格式“%Y-%m-%d%H:%m:%S”不匹配。%f%Z'

    应如何设置时间戳文字以指定 UTC-8 ?

    使现代化 我也试过

    "2023-11-15 01:02:03.123456 -08:00"
    

    这不起作用。我不确定这里的语法是什么。

    1 回复  |  直到 1 年前
        1
  •  2
  •   Sash Sinha    1 年前

    %Z 只能解析时区名称(例如“UTC”、“EST”、“CST”),而不能解析像“UTC-8”这样的偏移,您需要使用 %z (参见 docs ):

    >>> from datetime import datetime
    >>> datetime_str = "2023-11-15 01:02:03.123456-0800"  # UTC-8
    >>> datetime_object = datetime.strptime(datetime_str, "%Y-%m-%d %H:%M:%S.%f%z")
    >>> datetime_object
    datetime.datetime(2023, 11, 15, 1, 2, 3, 123456, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=57600)))
    

    n.b. 请确保您的时区偏移字符串符合+HHMM或-HHMM格式。