在 python 中将整个解释器设置为 UTC
set the whole interpreter as UTC in python
我想确保整个脚本在默认情况下仅使用 UTC。知道怎么做吗?我一直在寻找解决方案,但不知何故找不到任何有效的方法。我真正想要的只是确保:
import datetime
# SOME CODE HERE
print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
是否在任何机器上打印 1970-01-01 00:00:00,没有更多麻烦,并且一切都被视为 UTC。
我认为这应该可行:
import datetime
import time
import os
os.environ["TZ"] = "UTC"
time.tzset()
print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
您可以使用 datetime
中专为此目的而设计的便利函数,而无需通过其他库设置时区:
from datetime import datetime
# SOME CODE HERE
print(datetime.utcfromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
# '1970-01-01 00:00:00'
但是,如果您还需要将此 UTC 时区用于其他用途,例如第三方库等,那么 tzset()
的解决方案可能更方便:)
如果确保在导入datetime
之前设置了环境变量TZ
,那么就没有必要使用time.tzset()
。
例如:
>>> import os
>>> os.environ["TZ"] = "UTC"
>>> import datetime
>>> print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
1970-01-01 01:00:00
为了避免编辑您的Python脚本,您可以在执行它时设置环境变量。例如在 Linux 命令行中:
env TZ=UTC python myscript.py
我想确保整个脚本在默认情况下仅使用 UTC。知道怎么做吗?我一直在寻找解决方案,但不知何故找不到任何有效的方法。我真正想要的只是确保:
import datetime
# SOME CODE HERE
print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
是否在任何机器上打印 1970-01-01 00:00:00,没有更多麻烦,并且一切都被视为 UTC。
我认为这应该可行:
import datetime
import time
import os
os.environ["TZ"] = "UTC"
time.tzset()
print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
您可以使用 datetime
中专为此目的而设计的便利函数,而无需通过其他库设置时区:
from datetime import datetime
# SOME CODE HERE
print(datetime.utcfromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
# '1970-01-01 00:00:00'
但是,如果您还需要将此 UTC 时区用于其他用途,例如第三方库等,那么 tzset()
的解决方案可能更方便:)
如果确保在导入datetime
之前设置了环境变量TZ
,那么就没有必要使用time.tzset()
。
例如:
>>> import os
>>> os.environ["TZ"] = "UTC"
>>> import datetime
>>> print(datetime.datetime.fromtimestamp(0).strftime('%Y-%m-%d %H:%M:%S'))
1970-01-01 01:00:00
为了避免编辑您的Python脚本,您可以在执行它时设置环境变量。例如在 Linux 命令行中:
env TZ=UTC python myscript.py