如何转换 ISO 日期格式 2020-02-22T00:00:00+01:00 并使用 datetime 和 python 提取年份?

时间:2021-02-16 14:41:34

标签: python-3.x datetime

我正在从状态中获取日期的 API 文档:

<块引用>

所有日期/时间属性均以 ISO 8601 格式指定,例如YYYY-MM-DDTHH:MM:SSZ(UTC 时间)或 YYYY-MM-DDTHH:MM:SS+hh:mm(其中 hh:mm 指定与 UTC 的时间偏移)。不指定时区信息有效但结果未定义。

当我尝试使用 datetime.fromisoformat 进行转换时,它给出了 med 错误,说“值必须是 str”,即使它是一个字符串值。

    closed_date = data['closeddate'] 
    print('closeddate: ', closed_date) ##outputs: 2020-02-22T00:00:00+01:00

    convertedDate = datetime.fromisoformat(closed_date).date()
    year = convertedDate.year

输出值:

<块引用>

2020-02-22T00:00:00+01:00

但它适用于这种格式的日期:

<块引用>

2020-06-15T13:18:23.040000+02:00

我也试过:

convertedDateOfDeal = datetime.strptime(closed_date, '%Y-%m-%dT%H:%M:%S')

但这给了我错误:

<块引用>

ValueError:未转换的数据仍然存在:+02:00

剩下的怎么换算:'+02:00'代表时差??

1 个答案:

答案 0 :(得分:1)

我的问题是我获取的一些数据是空的,所以为了解决这个问题,我在转换之前检查了每个数据是否是一个字符串值:

    if isinstance(closed_date, str):
        converted_date = datetime.fromisoformat(closed_date).date()

        year = converted_date.year