为何Windows上将旧datetime转EST时偏移额外约18分钟?
问题原因解析
核心差异:时区数据库的历史记录策略不同
你遇到的18分钟偏移,本质是Windows和macOS依赖的时区数据库对标准化之前的古老时间处理逻辑不一样:
- macOS(基于IANA时区数据库):对于时区标准化之前的极早时间(比如1677年,远早于北美时区统一标准化的19世纪末),会直接使用后来确立的标准时区偏移(EST的UTC-5)做简化处理,所以输出整小时偏移的结果。
- Windows(基于微软时区数据库):保留了更细致的历史时区记录,包括19世纪之前北美东部地区使用的本地太阳时数据。当时纽约等地的本地太阳时比UTC晚约4小时51分52秒,换算成带负号的偏移格式就是-05:18:08(相当于UTC-5加上18分钟8秒),这就是你看到的非整数小时偏移的由来。
为什么2024年转换正常?
20世纪之后北美东部已经统一采用标准化的EST/EDT时区规则,IANA和微软的时区数据库对这段时期的记录完全一致,所以两台设备的转换结果没有差异。
补充说明
你提到的"EST"这类时区标识符本身就不适合用于古老时间,因为EST是标准化后的时区简称,在时区统一之前根本不存在这个概念。如果需要处理这类极早时间,建议直接使用UTC或者明确指定历史上的本地时间偏移,而非依赖现代时区标识符。
内容的提问来源于stack exchange,提问作者orlp
相关产品推荐
相关产品推荐

