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

为什么JavaScript在特定年月创建的Date对象会返回不同时区?

为什么JavaScript在处理不同日期时会返回不一致的时区?

特定日期测试

核心原因

你观察到的差异并非JavaScript处理逻辑异常,而是巴西利亚时区的夏令时规则导致的正常表现:

  • 巴西利亚所在时区历史上长期实行夏令时制度:夏令时生效时段时钟会拨快1小时,时区偏移从标准的GMT-0300变为GMT-0200,非夏令时时段恢复标准偏移。
  • 你测试的两个日期刚好落在不同的时段:
    • 2021年11月18日属于巴西利亚标准时间时段,对应偏移为GMT-0300
    • 1991年2月15日属于当年巴西利亚夏令时生效时段,对应偏移为GMT-0200

JavaScript的Date对象在生成本地化时间字符串时,会自动调用系统内置的时区历史规则,计算对应日期的实际时区偏移,因此不同日期的输出会出现偏移差异。

你用于验证的测试代码如下:

const a = new Date()
console.log(a)
// Thu Nov 18 2021 10:14:12 GMT-0300 (Horário Padrão de Brasília)
const b = new Date(1991, 1, 15)
console.log(b)
// Fri Feb 15 1991 00:00:00 GMT-0200 (Horário de Verão de Brasília)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:03