【问题标题】:Should I make datetime.now() timezone aware before converting to EST?在转换为 EST 之前,我应该知道 datetime.now() 时区吗?
【发布时间】:2018-05-06 18:38:24
【问题描述】:

我必须根据 EST 术语进行大量时间计算,两个打印语句中的第二个是否是确保datetime.now() 将从世界任何地方返回适当的 TZ 感知 EST 时间的适当方式?我认为他们现在都返回相同值的原因是因为我的当地时间 EST。我的逻辑是让它在 UTC 中识别 TZ,然后转换为 EST,所以我从不依赖“本地”时间。

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

【问题讨论】:

    标签: python datetime pytz


    【解决方案1】:

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

    print(datetime.now())
    

    您的第一行指定您希望使用 EST 时间。第二个指定 UTC,但将其转换为 EST。

    这是否为您清除了功能?

    【讨论】:

    • 是的,这为我解决了问题。我不确定为什么我认为 pytz 不会覆盖默认参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2013-05-24
    • 2014-08-10
    相关资源
    最近更新 更多