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

为何将日期转换为UTC时间时有时减1小时,有时减2小时?

为什么日期转UTC时有时减1小时,有时减2小时?

核心原因是**夏令时(DST)**和日期字符串解析的时区规则在起作用:

  • 夏令时带来的时区偏移变化
    很多实行夏令时的地区,冬令时和夏令时的UTC偏移量不同。比如欧洲中部时间(CET/CEST):冬令时是UTC+1,夏令时切换为UTC+2。

    • 用new Date()获取当前时间时,如果当前处于夏令时,本地时间比UTC快2小时,toISOString()转UTC时就会减去2小时;如果是冬令时,本地时间比UTC快1小时,转UTC就只减1小时。
    • 你例子里的2023-01-02属于冬令时时段,所以new Date("2023-01-02 22:00")对应的本地时区偏移是UTC+1,转UTC自然只减1小时。
  • 日期字符串的解析规则
    像"2023-01-02 22:00"这种带空格的日期格式,JS引擎会默认按本地时区解析,而不是UTC。所以它会被当作你本地时区的2023年1月2日22点,再按照当时的时区偏移计算UTC时间。

实际代码对比示例:

// 假设当前处于夏令时(本地时区UTC+2)
console.log(new Date().toISOString()); // 输出比当前本地时间少2小时的UTC时间
// 2023-01-02处于冬令时(本地时区UTC+1)
console.log(new Date("2023-01-02 22:00").toISOString()); // 输出"2023-01-02T21:00:00.000Z",比输入时间少1小时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:42:06