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

问题描述 投票:0回答:2

我有一个像这样创建的日期时间对象:

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 datetime iso8601
2个回答
2
投票

有没有办法获得我想要的输出而不必诉诸字符串操作?

您只需将

dt
转换为
str
即可做到这一点:

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

0
投票

使用 isoformat 并将日期/时间

sep
设置为空格和
timespec
秒:

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
© www.soinside.com 2019 - 2024. All rights reserved.