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

为何调用moment.startOf('day')会返回早1小时的UTC时间?

问题解答

首先确认:你对Z的理解完全正确,它代表该时间为UTC标准时间。

为什么startOf('day')会返回提前1小时的结果?

核心原因是moment的startOf('day')方法默认基于**你的本地时区(UTC+1)**计算当日起始时间,而非UTC时区。

具体逻辑拆解:

  1. 你传入的2024-07-01T00:00:00.000Z是UTC时间,转换到你的本地时区(UTC+1)后为2024-07-01 01:00:00。
  2. 调用startOf('day')时,moment会将这个本地时间调整到本地当日的起始时刻——即2024-07-01 00:00:00(UTC+1)。
  3. 最后通过toISOString()转换回UTC标准格式,这个本地起始时间对应的UTC时间就是2024-06-30T23:00:00.000Z,也就是你看到的结果。

如何得到预期的UTC当日起始时间?

如果要基于UTC时区计算当日起始,需要显式调用.utc()方法,让moment全程以UTC时区处理:

moment('2024-07-01T00:00:00.000Z').utc().startOf('day').toISOString();
// 返回结果:'2024-07-01T00:00:00.000Z'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:57:33