首页 > 解决方案 > 这个 datetime.strptime 函数的正确代码格式是什么?

问题描述

我有一个摄取和处理数据的 python 程序,但一个字段没有正确转换。一条数据以java.time.OffsetDateTime.now(ZoneOffset.UTC)字符串的形式出现,我们使用 strptime 创建一个日期时间对象。这是简化的代码:

$ python

from datetime import datetime

# source string format: (java.time.OffsetDateTime.now(ZoneOffset.UTC))
date_string = "2021-06-28T19:47:27.510670082Z"

# this works yet is not in the source format
date_string = "2021-06-28T19:47:27.510670"

datetime_object = datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S.%f')

print (datetime_object)

导致此错误

ValueError: unconverted data remains: 082Z

创建日期时间对象的正确格式代码是什么?

标签: pythondatetime

解决方案


只需使用dateutil. 您有时间以 ISO 8601 格式设置时区

    from dateutil import parser
    
    # source string format: (java.time.OffsetDateTime.now(ZoneOffset.UTC))
    date_string = "2021-06-28T19:47:27.510670082Z"
    
    datetime_object = parser.parse(date_string)
    print(datetime_object)  # 2021-06-28 19:47:27.510670+00:00

推荐阅读