You need to enable JavaScript to run this app. Python中将日期字符串转换为Datetime对象出现格式匹配错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python中将日期字符串转换为Datetime对象出现格式匹配错误如何解决

日期字符串转换问题解答

核心问题说明

你遇到的报错由两个独立问题共同导致:

  • 格式串与实际字符串结构完全不匹配:你使用的%Y%m%d要求输入为无分隔符的8位日期数字(例如20170202),但你实际的字符串是带横杠分隔、时间部分、T/Z标记的ISO标准日期格式,结构完全不符。
  • 字符串外层的双引号会直接影响转换:从报错内容可以看到,你传入的时间数据本身就包含双引号"字符,转换时该字符会被当作字符串的一部分参与格式校验,必然会匹配失败。

ValueError: time data '"2017-02-02T00:00:00Z"' does not match format '%Y%m%d'

正确实现方案

步骤说明

  1. 先清洗原始字符串:去除外层多余的双引号,再处理末尾的Z标记(Python内置方法默认将Z识别为普通字符,需要替换为UTC时区标识或者直接移除)
  2. 匹配正确的格式解析字符串,或直接调用适配ISO格式的内置方法完成转换

代码示例

兼容所有Python版本的写法

import datetime

date_string = '"2017-02-02T00:00:00Z"'
# 清洗字符串:去双引号 + 移除末尾Z
clean_str = date_string.strip('"').rstrip('Z')
# 按实际结构指定格式串解析
date_value = datetime.datetime.strptime(clean_str, '%Y-%m-%dT%H:%M:%S')
# 如果仅需要yyyy-mm-dd格式的日期对象,取date()即可
date_only = date_value.date()
# 如果需要输出为yyyy-mm-dd格式的字符串,调用strftime
date_str = date_value.strftime('%Y-%m-%d')

Python 3.7+ 简化写法

import datetime

date_string = '"2017-02-02T00:00:00Z"'
# 清洗字符串:去双引号 + 将Z替换为标准UTC时区标识
clean_str = date_string.strip('"').replace('Z', '+00:00')
# 直接调用ISO格式解析方法,无需手动写格式串
date_value = datetime.datetime.fromisoformat(clean_str)
date_only = date_value.date()

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 18:15:03