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

为什么JS中带T17:00:00.000Z参数的new Date()会返回次日日期?

JavaScript Date对象时区转换逻辑说明

现象背后的核心原理

你观察到的输出差异本质是UTC时间和本地时区的自动转换逻辑:

  • 你传入的时间字符串2015-01-25T17:00:00.000Z末尾的Z是ISO 8601标准的约定,代表该时间是*协调世界时(UTC)*下的时间点
  • JavaScript的Date实例直接打印时,默认会调用toString()方法,将内部存储的UTC时间戳转换为当前运行环境的本地时区格式化输出
  • 你得到的输出Jan 26 2015 00:00:00说明你当前环境的本地时区为UTC+7:UTC时间1月25日17点加7小时,正好是本地时区1月26日0点,和你的观测结果完全吻合。

相关行为的官方规范依据

这一行为完全符合ECMAScript标准的明确规定:

  • Date对象内部仅存储自1970-01-01 00:00:00 UTC以来的毫秒级时间戳,本身不保存时区信息
  • 解析ISO 8601格式的时间字符串时,如果字符串携带Z后缀,会直接按UTC时间转换为内部时间戳存储
  • 你提到的传入时分秒为00:00:00的时区参数场景,本质是将对应时区的0点时间转换为UTC时间戳存储,当调用toString()输出本地时间时,就会显示为对应时区的00:00:00,完全符合标准定义的转换规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:24:04