You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将Zendesk API返回的字符串日期转为可格式化对象?

解决Zendesk日期字符串转Python datetime对象的问题

嘿,这个问题我对接Zendesk API的时候也踩过同款坑!你碰到的AttributeError原因其实很直白:strptime()是Python datetime类的类方法,不是字符串对象自带的方法,直接在字符串上调用肯定会报错。

下面给你两种靠谱的解决方法,都能把Zendesk返回的ISO格式字符串转成可操作的datetime对象:

方法1:用datetime.strptime()指定格式

这是通用度最高的方法,不管Python版本都能用,只需要把字符串和对应的格式串传给datetime.strptime()就行:

from datetime import datetime

# 从Zendesk拿到的日期字符串
zendesk_date = "2018-04-21T21:41:09Z"
# 调用datetime类的strptime方法,传入字符串和格式模板
date_obj = datetime.strptime(zendesk_date, "%Y-%m-%dT%H:%M:%SZ")

# 现在date_obj是datetime对象,就可以用strftime随意格式化了
print(date_obj.strftime("%Y/%m/%d %H:%M:%S"))  # 输出:2018/04/21 21:41:09

格式串里的%Y代表4位年份,%m是两位月份,%d是两位日期,%H是24小时制小时,%M是分钟,%S是秒,最后Z直接匹配字符串里的时区标识。

方法2:用fromisoformat()快速转换(Python 3.7+)

因为Zendesk返回的是标准ISO 8601格式,Python 3.7及以上版本提供了更简洁的fromisoformat()方法,不过需要先把末尾的Z替换成+00:00(fromisoformat默认不直接识别Z):

from datetime import datetime

zendesk_date = "2018-04-21T21:41:09Z"
# 替换Z为UTC时区标识,再调用fromisoformat
date_obj = datetime.fromisoformat(zendesk_date.replace("Z", "+00:00"))

# 同样可以格式化输出
print(date_obj.strftime("%d-%b-%Y %I:%M %p"))  # 输出:21-Apr-2018 09:41 PM

额外提示:如果需要处理时区

如果你的业务需要带时区的datetime对象,可以在转换后加上UTC时区信息:

from datetime import datetime, timezone

date_obj = datetime.strptime(zendesk_date, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
# 之后可以方便地转换到其他时区,比如东八区
cn_date = date_obj.astimezone(timezone(offset=datetime.timedelta(hours=8)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:16