如何在Windows 10中设置时区缩写格式,适配Python strftime
问题解答
首先明确:Windows 10没有系统级设置可以让Python的time.strftime("%Z")返回时区缩写(比如PDT)。原因在于Python的time模块在Windows平台上调用的是系统API GetTimeZoneInformation,该API默认返回时区的完整名称,而时区缩写是单独的字段,Python的time模块并未直接读取这个字段来填充%Z格式符。
你提到的控制面板里确实没有相关选项——Windows的时区设置仅管理时区选择、自动调整夏令时等,不控制API返回的时区名称格式。注册表中也没有公开的配置项可以修改这个API的返回值。
如果想不用正则提取的脚本方法,还有一个更可靠的替代方案(仍需修改代码,但逻辑更严谨):使用zoneinfo(Python 3.9+内置)或pytz模块,这些模块依赖IANA时区数据库,能直接返回标准时区缩写,不受系统API限制。示例代码:
from datetime import datetime import zoneinfo # 获取当前系统对应的时区 current_tz = zoneinfo.ZoneInfo(datetime.now().astimezone().tzinfo.key) # 用指定时区格式化时间 startup = datetime.now(current_tz).strftime("This session began on %a - %x at %X %Z") print(startup)
但如果坚持完全不修改代码、仅通过系统设置解决,目前是无法实现的,只能继续使用你现有的脚本方法,或者切换到上述更可靠的时区处理库。
内容的提问来源于stack exchange,提问作者HeKaiNani
相关产品推荐
相关产品推荐

