在 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