time.time() 在同时运行time.time() 的任何机器上返回相同的值,即使这些机器使用不同的时区。
我有两台机器,一台使用UTC,另一台使用UTC+7。
我几乎同时在两台机器上运行这个脚本(UTC 大约提前三秒):
import time
from datetime import datetime
import pytz
print("GENERATING TIMESTAMP:")
print(" time.time()", int(time.time()))
print(" datetime.now().timestamp()", int(datetime.now().timestamp()))
print("datetime.utcnow().replace(tzinfo=pytz.UTC).timestamp()", int(datetime.utcnow().replace(tzinfo=pytz.UTC).timestamp()))
print(" datetime.utcnow().timestamp()", int(datetime.utcnow().timestamp()))
ts = datetime.utcnow().replace(tzinfo=pytz.UTC).timestamp()
print("\nGENERATING DATETIME FROM TIMESTAMP ts =", ts)
print(" datetime.fromtimestamp(ts)", datetime.fromtimestamp(ts))
print(" datetime.fromtimestamp(ts, tz=pytz.UTC)", datetime.fromtimestamp(ts, tz=pytz.UTC))
print("datetime.fromtimestamp(ts).replace(tzinfo=pytz.UTC)", datetime.fromtimestamp(ts).replace(tzinfo=pytz.UTC))
UTC 机器打印了这个:
GENERATING TIMESTAMP:
time.time() 1601469475
datetime.now().timestamp() 1601469475
datetime.utcnow().replace(tzinfo=pytz.UTC).timestamp() 1601469475
datetime.utcnow().timestamp() 1601469475
GENERATING DATETIME FROM TIMESTAMP ts = 1601469475.713351
datetime.fromtimestamp(ts) 2020-09-30 12:37:55.713351
datetime.fromtimestamp(ts, tz=pytz.UTC) 2020-09-30 12:37:55.713351+00:00
datetime.fromtimestamp(ts).replace(tzinfo=pytz.UTC) 2020-09-30 12:37:55.713351+00:00
UTC+7 机器打印这个:
GENERATING TIMESTAMP:
time.time() 1601469478
datetime.now().timestamp() 1601469478
datetime.utcnow().replace(tzinfo=pytz.UTC).timestamp() 1601469478
datetime.utcnow().timestamp() 1601444278
GENERATING DATETIME FROM TIMESTAMP ts = 1601469478.637603
datetime.fromtimestamp(ts) 2020-09-30 19:37:58.637603
datetime.fromtimestamp(ts, tz=pytz.UTC) 2020-09-30 12:37:58.637603+00:00
datetime.fromtimestamp(ts).replace(tzinfo=pytz.UTC) 2020-09-30 19:37:58.637603+00:00
您可以看到time.time() 应该在任何机器上返回相同的值,而不管该机器使用的时区如何。
另外,假设 time.time() 已经从不同时区的地方调用,并在他们的机器上转换为 UTC 日期时间,他们都会给出相同的 UTC 时间吗?
是的,实验结果倒数第二行显示。