0

如果我在 Python 程序运行时更改计算机的时区,该程序将继续使用旧时区进行计算和转换,除非我重新启动程序。

这在诸如解析使用本地时间的命令的输出(例如net stats svr在 Windows 中)的情况下会导致麻烦。time.mktime(local_naive_datetime.timetuple())除非重新启动程序,否则将这种解析的本地时间转换为 Unix 时间戳会返回不正确的时间戳,因为它假定本地时间在旧时区。

演示此问题的简单示例:调用datetime.datetime.now(),更改系统时区,然后再次调用该函数。第二次调用返回旧时区的本地时间。

是否可以使用函数或其他方法告诉 Python 重新检查系统时区而无需重新启动长时间运行的脚本?

我在 Windows 7 上运行 Python 2.7.3。

4

2 回答 2

0

是的,有一个功能。你可以打电话 time.tzset() ,你可以用它time.tzname 来获取时区信息。

请看一下http://docs.python.org/2/library/time.html#time.tzset

于 2013-02-22T11:07:28.187 回答
0

此代码用于检测更改。虽然不完全是生产质量。

import os
import time
print(time.ctime(time.time()))
inp = input('change time and press enter')
f = open('newtimezone','w')
f.close()
print(time.ctime(os.stat('newtimezone').st_mtime))
于 2013-02-22T11:17:54.970 回答