我刚刚注意到:
>>> import datetime
>>> from django.utils import timezone
>>> (datetime.datetime.now(tz=datetime.timezone.utc) - timezone.now()).microseconds
999989
>>> (datetime.datetime.now(tz=datetime.timezone.utc) - timezone.now()).seconds
86399
>>> 24*60*60
86400
>>> (datetime.datetime.now(tz=datetime.timezone.utc) - timezone.now()).days
-1
>>> timezone.now()
datetime.datetime(2022, 11, 17, 13, 1, 36, 913132, tzinfo=<UTC>)
>>> datetime.datetime.now(tz=datetime.timezone.utc)
datetime.datetime(2022, 11, 17, 13, 1, 41, 913958, tzinfo=datetime.timezone.utc)
如何使用UTC "时区"获取当前时间?不同吗?为什么差是正的秒数,而正好是负的一天?
我可以用datetime.datetime.now(tz=datetime.timezone.utc)
代替timezone.now()
吗?
减法中的第二个值是在第一个值之后一微秒左右创建的。这是一个较晚的时间点。你用前面的时间点减去后面的时间点。产生负增量:
>>> datetime.datetime.now(tz=datetime.timezone.utc) - timezone.now()
datetime.timedelta(days=-1, seconds=86399, microseconds=999981)
如果你只看一天或微秒的一部分,这看起来是一个巨大的差异。但这只是timedelta
表示过去的一小部分秒的方式。它是减去一天加上86399秒和999981毫秒。参见Python timedelta对象的负值。