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

Python datetime对象转字符串输出格式不符合预期如何解决

问题根因

  • 你调用datetime.now()生成的是无绑定时区的 naive datetime 对象,无法读取时区信息,所以%Z格式符输出为空
  • %f格式符输出的是6位微秒,和你需要的3位毫秒精度不符
  • %Z/%z默认输出的时区格式和你需要的+00:00带冒号的偏移量格式不匹配

最优解决方案(Python 3.6+ 支持)

直接使用datetime对象自带的isoformat方法,指定毫秒精度,会自动生成符合你要求的ISO 8601格式字符串,代码如下:

from datetime import datetime, timezone

# 生成绑定UTC时区的datetime对象
cur_time = datetime.now(timezone.utc)
# timespec="milliseconds"指定保留3位毫秒精度,自动输出带时区偏移的格式
last_runtime = cur_time.isoformat(timespec="milliseconds")
print(last_runtime)

输出示例:2021-10-13T09:09:27.825+00:00,完全匹配你的需求。

手动格式化兼容方案

如果你需要用strftime手动实现,可参考以下代码:

from datetime import datetime, timezone

cur_time = datetime.now(timezone.utc)
# 四舍五入得到3位毫秒
ms = round(cur_time.microsecond / 1000)
# 基础格式化得到带4位时区偏移的字符串(如+0000)
time_str = cur_time.strftime(f"%Y-%m-%dT%H:%M:%S.{ms:03d}%z")
# 处理时区格式,插入冒号得到+00:00
last_runtime = f"{time_str[:-2]}:{time_str[-2:]}"
print(last_runtime)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:18:03