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

如何无需字符串操作打印带冒号时区偏移的Python datetime?

问题

我创建了如下datetime对象:

dt = datetime(2023, 9, 18, 22, 30, 0, tzinfo=timezone(timedelta(hours=9)))

该对象对应2023年9月18日22:30(JST),我希望将其格式化为:

2023-09-18 22:30:00+09:00

我尝试了以下两种方式:

dt.strftime("%Y-%m-%d %H:%M:%S%Z")  # 2023-09-18 22:30:00UTC+09:00
dt.strftime("%Y-%m-%d %H:%M:%S%z")  # 2023-09-18 22:30:00+0900

这两种输出均不符合需求,要么需移除第一种结果中的UTC,要么需给第二种结果的时区偏移添加冒号。请问是否存在无需字符串操作即可得到目标格式的方法?

解决方法

有两种无需手动字符串处理的可行方案:

方案1:使用datetime.isoformat()方法

Python的datetime对象自带的isoformat()方法可以直接输出符合要求的格式,默认时间和日期的分隔符是T,通过sep参数可以改成空格:

dt.isoformat(sep=' ')
# 输出结果:'2023-09-18 22:30:00+09:00'

这个方法会自动处理时区偏移的冒号,完全匹配你的格式需求,且无需额外依赖。

方案2:使用第三方库arrow(可选)

如果日常需要频繁处理复杂日期时间格式,可以用arrow库简化操作,直接指定格式即可得到目标输出:

import arrow
arw = arrow.get(dt)
arw.format('YYYY-MM-DD HH:mm:ssZZ')
# 输出结果:'2023-09-18 22:30:00+09:00'

注意这个方案需要额外安装arrow库,若不想引入外部依赖,方案1是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:03:27