首页 > 解决方案 > 如何转换 ISO 日期格式 2020-02-22T00:00:00+01:00 并在 python 中使用 datetime 提取年份?

问题描述

我正在从州获取日期的 API 文档:

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

当我尝试使用 datetime.fromisoformat 进行转换时,它会给出错误提示“值必须是 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'代表时差??

标签: python-3.xdatetime

解决方案


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

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

        year = converted_date.year

推荐阅读