打印日期时间,包括时区,但不包括时区名称

Printing a datetime, with timezone, but excluding the timezone name

提问人:Woody1193 提问时间:9/21/2023 最后编辑:FObersteinerWoody1193 更新时间:9/21/2023 访问量:48

问:

我有一个 datetime 对象,我创建如下:

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

这相当于 2023 年 9 月 18 日晚上 10:30(日本标准时间)。我想像这样打印这个日期时间:

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

python 日期时间 ISO8601

评论


答:

3赞 Timeless 9/21/2023 #1

有没有办法在不求助于字符串操作的情况下获得我想要的输出?

你可以通过简单地将你的 to str 强制转换为 str 来做到这一点:dt

print(str(dt)) # which gives 2023-09-18 22:30:00+09:00

评论

0赞 Woody1193 9/21/2023
奇怪。我已经打印了好几天了,但我没有注意到这一点。不错的答案datetime
2赞 FObersteiner 9/21/2023 #2

使用日期/时间设置为空格和秒的 ISO 格式septimespec

from datetime import datetime, timezone, timedelta

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

print(dt.isoformat(" ", timespec="seconds")
# 2023-09-18 22:30:00+09:00

评论

1赞 Woody1193 9/21/2023
我不得不抬头看,但这正是我需要的。isoformat