Delorean
文档展示了在给定时区获取当前时间的方法,使用datetime
:
from datetime import datetime
from pytz import timezone
EST = "US/Eastern"
UTC = "UTC"
d = datetime.utcnow()
utc = timezone(UTC)
est = timezone(EST)
d = utc.localize(d)
d = est.normalize(EST)
将其与基于德洛雷安的代码进行比较:
from delorean import Delorean
EST = "US/Eastern"
d = Delorean(timezone=EST)
我认为应该将datetime
示例写成:
from datetime import datetime
import pytz
eastern_timezone = pytz.timezone("US/Eastern")
d = datetime.now(eastern_timezone)
有没有情况是第一个代码示例可以正常工作,而最后一个失败了?
更新: 当前示例:
from datetime import datetime
import pytz
d = datetime.utcnow()
d = pytz.utc.localize(d)
est = pytz.timezone('US/Eastern')
d = est.normalize(d)
return d
这仍然太冗长。
问题依然存在:你是否需要通过 UTC 和 tz.normalize()
明确进行往返,或者可以直接使用 datetime.now(tz)
?
datetime.now(tz)
:是否您可以始终使用它来返回给定时区的当前时间,而不是使用est.normalize(utc.localize(datetime.uctnow()).astimezone(est))
。 - jfstz.normalize()
进行显式的往返或者只需像问题中所示使用datetime.now(tz)
。我认为datetime.now(tz)
就足够了,但是 Delorian的作者持不同意见。 - jfs