在转换为 EST 之前,我应该让 datetime.now() 知道时区吗?

Should I make datetime.now() timezone aware before converting to EST?

我必须根据 EST 条款进行大量时间计算,两个打印语句中的第二个是否是确保 datetime.now() 将 return 适当的 TZ 感知 EST 时间的适当方法在世界上任何地方?我假设它们现在 return 具有相同值的原因是因为我的当地时间 EST。我的逻辑是让它在 UTC 中识别 TZ,然后转换为 EST,所以我从不依赖 "local" 时间。

from datetime import datetime
from pytz import timezone

EST = timezone('America/New_York')

print(datetime.now(EST))
print(datetime.now(timezone('UTC')).astimezone(EST))

给出:

2017-11-22 16:58:55.236498-05:00
2017-11-22 16:58:55.237080-05:00

无论您身在何处,这些都会在同一时间打印。我不在美国东部时间,他们都给出 你的 当地时间。当地时间来自默认参数:

print(datetime.now())

您的第一行指定您想要 EST 时间。第二个指定 UTC,但将其转换为 EST。

这是否为您清理了功能?