【发布时间】:2021-03-16 01:18:43
【问题描述】:
所以我试图在 python 中创建一个不和谐的机器人并发出一个命令来显示我选择的所有时区,但问题是所有这些时区都比正常时间提前了大约 7-8 小时。
import datetime
from pytz import timezone
localFormat = "%Y-%m-%d %H:%M:%S, %Z%z"
UTC=datetime.datetime.utcnow()
timezonelist = ["US/Eastern", "US/Central", "US/Mountain", "US/Pacific", "Etc/UTC", "Europe/Berlin", "Australia/North", "Australia/South", "Australia/West"]
for tz in timezonelist:
localDatetime = UTC.astimezone(timezone(tz))
x = localDatetime.strftime(localFormat)
print(tz + " " + x)
例如,Etc/UTC 应输出 22:56:25 时输出 05:56:25,其他时区遵循此示例,EST 在应为 17:56:25 时输出 00:56:25,或 MST (我在哪里),22:56:25 而不是 15:56:25。但是,datetime.utcnow() 会返回正确的时间。
我做了一些研究,它说 PYTZ 使用 LMT,但由于所有都向前推进了一个数量,我认为这与此无关。
【问题讨论】:
-
顺便说一句。 LMT(本地平均时间)是 pytz 时区对象的状态您将其附加到具有
astimezone或localize的日期时间对象。如果你使用 datetime 的replace方法,它只会保持 LMT - 如果你使用 pytz,你不应该使用它。使用 dateutil 或 zoneinfo 时区对象,您不必担心这个问题。
标签: python python-3.x datetime discord pytz