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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:18:09