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

为何Python中datetime与time的isoformat输出存在差异?

问题解释:datetime.isoformat()与time.isoformat()输出不一致

问题代码

from datetime import datetime, time
from zoneinfo import ZoneInfo

time(8, 37, 9, tzinfo=ZoneInfo("UTC")).isoformat()
# '08:37:09+00:00'

datetime.utcnow().isoformat()
# 2023-07-13T08:37:09.033778

time(8, 37, 9, 33778).isoformat()
# 08:37:09.033778

time(8,37,9, 33778, ZoneInfo("UTC")).isoformat()
# 08:37:09.033778+00:00

原因分析

核心差异在于时区信息的有无:

  • datetime.utcnow()返回的是无时区感知(naive)的datetime对象,它的值是UTC时间,但对象本身没有绑定时区元数据,因此调用isoformat()时不会输出时区偏移部分。
  • 传入tzinfo参数的time对象是带时区感知(aware)的对象,isoformat()方法会自动在末尾附加时区偏移字符串(如+00:00)。

对齐格式的方法

如果想要让datetime的输出和带时区的time对象格式一致,改用datetime.now(ZoneInfo("UTC"))获取带UTC时区的感知型datetime,此时调用isoformat()会输出类似2023-07-13T08:37:09.033778+00:00的结果,和带时区的time对象格式对齐。

内容的提问来源于stack exchange,提问作者Mathieu B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:25:01