Python 3:Windows 的 time.tzset() 替代品?

Python 3: time.tzset() alternative for Windows?

提问人:SagittariusAStar_MW 提问时间:5/25/2020 最后编辑:FObersteinerSagittariusAStar_MW 更新时间:5/25/2020 访问量:3387

问:

我是 Python 的新手。我正在阅读 Doug Hellmann 的可爱书“Python 3 标准库示例”中的日期和时间,我偶然发现了以下代码片段:

import time
import os


def show_zone_info():
    print(f'''\
    TZ    : {os.environ.get('TZ', '(not set)')}
    tzname: {time.tzname}
    Zone  : {time.timezone} ({time.timezone / 3600})
    DST   : {time.daylight}
    Time  : {time.ctime()}
    ''')


if __name__ == '__main__':
    print('Default: ')
    show_zone_info()

    ZONES = [
        'GMT',
        'Europe/Amsterdam'
    ]

    for zone in ZONES:
        os.environ['TZ'] = zone
        # time.tzset()      # Only available on Unix
        print(zone, ':')
        show_zone_info()

问题是,仅在 Unix 上可用,在 Windows 机器上没有它,时区在代码运行时不会更改。在 Windows 上有什么替代方案?(在提出这个问题时,我正在 Windows 3.8.3 上运行 Python 10。time.tzset()time.tzset()

python-3.x Windows 日期时间 时区

评论

1赞 avrsanjay 5/25/2020
你看过这个链接吗...stackoverflow.com/questions/4360981/......
0赞 SagittariusAStar_MW 5/26/2020
@avrsanjay,它不起作用。至少我无法让它工作。该解决方案响应 Windows 时区更改。另一方面,我正在改变.此外,看起来解决方案是针对 2 年前编写的 Python9。我想知道从那时起是否有任何其他可能的解决方案。os.environ['TZ']
0赞 SagittariusAStar_MW 5/26/2020
@MrFuppes,我在获取时区方面没有问题,我在设置时区方面有问题。
0赞 FObersteiner 5/26/2020
@SagittariusAStar_MW,对不起,我完全误读了,抱歉!看了一下文档,我明白了为什么该方法可能有用,但文档也说不应该依赖该函数。我肯定会建议使用指定的时区,而不是改变例如的行为 - 我想这会造成一团糟......localtime()
0赞 SagittariusAStar_MW 5/26/2020
@MrFuppes,嗯,注释说,如果不调用,就不应该依赖通过设置更改的行为。它并没有完全说不可靠。调试可能需要在不同时区下测试代码。os.environ['TZ']tzset()tzset()

答: 暂无答案