JavaScript中1900年前日期时区偏移异常问题咨询
JavaScript Date对象处理1900年前日期的时区偏移问题
问题原因
这是**历史本地太阳时(LMT, Local Mean Time)**导致的差异:
- 现代标准时区(如UTC/GMT+0)是近现代才统一确立的规范,1900年之前全球多数地区使用基于本地太阳运行的LMT,而非统一的UTC偏移。
- ECMAScript规范要求JS引擎在处理1970年之前的日期时,需匹配对应地区的历史时区数据(依赖IANA时区数据库),而非强制使用现代时区偏移。
示例解析
你输入的"1701-01-01T00:00:00+00:00"是UTC时间,但toString()方法会将日期转换为本地时区(你的环境对应中欧地区)的可读格式。该地区在1701年使用的LMT比UTC慢14分44秒,因此转换后本地时间显示为1700年12月31日23:45:16。
解决方法
若要得到预期的UTC标准格式输出,需使用toISOString()方法替代toString():
const dateStr = "1701-01-01T00:00:00+00:00"; const date = new Date(dateStr); console.log(date.toISOString()); // 输出:1701-01-01T00:00:00.000Z
内容的提问来源于stack exchange,提问作者dragomirik
相关产品推荐
相关产品推荐

