【问题标题】:Convert string with +00:00 to datetime in Python在 Python 中将带有 +00:00 的字符串转换为日期时间
【发布时间】:2021-07-28 13:28:08
【问题描述】:

我被困在如何将这个强对象转换为日期时间对象。这是我尝试过的:

import datetime
date_time_str = "2021-07-28 11:19:36.824150+00:00"
date_time_obj = datetime.datetime.strptime(date_time_str, '%y-%m-%d %H:%M:%S.%f%z')

但是,我不断收到

ValueError: 时间数据 '2021-07-28 11:19:36.824150+00:00' 与格式不匹配。

正确的格式是什么?

【问题讨论】:

    标签: python formatting timestamp


    【解决方案1】:

    关于doc

    • %y 是两位数的年份
    • %Y 代表 4 位年份

    使用'%Y-%m-%d %H:%M:%S.%f%z'

    date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
    

    或使用fromisoformat

    date_time_obj = datetime.fromisoformat(date_time_str)
    

    【讨论】:

      【解决方案2】:

      您的问题不是时区,而是年份。你应该使用%Y 而不是%y

      >>> import datetime
      >>> date_time_str = "2021-07-28 11:19:36.824150+00:00"
      >>> date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
      >>> date_time_obj
      datetime.datetime(2021, 7, 28, 11, 19, 36, 824150, tzinfo=datetime.timezone.utc)
      

      【讨论】:

        【解决方案3】:

        您的问题是您使用 %y 而不是 %Y
        (见参考:https://www.programiz.com/python-programming/datetime/strptime

        date_time_str = "2021-07-28 11:19:36.824150+00:00"
        date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')

        【讨论】:

          猜你喜欢
          • 2018-03-23
          • 1970-01-01
          • 2014-02-19
          • 2021-03-30
          • 2021-03-25
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多