You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何TimeZoneInfo在Windows与Mac/Linux上返回数据不一致?

Windows系统下TimeZoneInfo获取历史时区偏移错误问题

当获取过去日期的时区偏移量时,仅Windows系统中的TimeZoneInfo会返回错误结果。以下.NET代码可复现该问题:

let dt = DateTimeOffset.Parse("1904-05-11T08:45:30Z")
let timeZone = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid")

timeZone.GetUtcOffset(dt).Hours // 预期为0,但在Windows上返回2

问题原因

核心原因是Windows的时区数据未包含足够准确的历史时区规则。Linux/macOS默认使用IANA时区数据库,该数据库对历史时区规则的记录更完整且更新频率更高;而Windows的时区数据依赖系统更新推送,部分老旧历史时段的时区规则可能未被覆盖。

手动更新Windows时区数据的方法

  • 通过Windows更新界面触发:
    1. 打开「设置」→「Windows更新」→「高级选项」→「可选更新」
    2. 在「其他更新」或「时区更新」分类下,勾选可用的时区数据更新并完成安装
  • 命令行强制检查更新:
    以管理员权限打开命令提示符,执行以下命令:
    wuauclt /detectnow /updatenow
    
  • 手动安装时区更新包:
    微软会在官方支持渠道发布特定时区的更新MSI包,可下载与系统版本匹配的安装包手动安装(注意仅针对特定场景使用)。

内容的提问来源于stack exchange,提问作者thur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:50:55