Phi*_*ord 7 python datetime pytz freezegun
我很困惑为什么用冻结枪冻结时间的函数根据是否datetime.datetime.utcnow()被调用输出不同的UTC时间,或者datetime.datetime.now(pytz.utc).我不是说它坏了,只是因为我不明白为什么,而且想知道!
例如,使用此功能:
@freeze_time("2012-01-14 03:21:34", tz_offset=-4)
def test():
print("utcnow(): %s" % datetime.datetime.utcnow())
print("pytz.utc: %s" % datetime.datetime.now(pytz.utc))
Run Code Online (Sandbox Code Playgroud)
输出是:
utcnow(): 2012-01-14 03:21:34
pytz.utc: 2012-01-13 23:21:34+00:00
Run Code Online (Sandbox Code Playgroud)
我想第一个是天真的约会时间,但为什么它们的时间不同?
(最终为什么我想知道:如果我在我的测试中使用freezegun,并且我在我的代码中使用pytz生成时间进行测试,我想知道它的"正确"行为应该是什么.)
看起来这个问题不会很快得到解决。最后我用这个作为解决方法:
def freezegun_utc_workaround():
return datetime.utcnow().replace(tzinfo=pytz.utc)
Run Code Online (Sandbox Code Playgroud)
为了这
datetime.datetime.now(pytz.utc)
Run Code Online (Sandbox Code Playgroud)
也许最好将其包装并手动修补。
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |