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

为何dayjs.toString()输出错误时间?format()显示正常

Day.js中format()与toString()输出差异的原因

先看你的代码示例:

import dayjs from "dayjs";

console.log(dayjs().startOf('day').format())  // 2024-06-21T00:00:00+08:00
console.log(dayjs().startOf('day').toString()) // Thu, 20 Jun 2024 16:00:00 GMT

两者输出差异的核心原因是时区处理逻辑不同:

  • format()方法:默认采用本地时区(你的环境是+08:00时区)输出时间。startOf('day')会把时间设置为本地时区的当天0点,所以输出的是符合你预期的本地时间。
  • toString()方法:这是Day.js继承自原生JavaScript Date对象的方法,它会强制将时间转换为GMT时区(UTC±0)展示。本地时区+08:00的当天0点,减去8小时就是GMT时区的前一天16点,所以输出的Thu, 20 Jun 2024 16:00:00 GMT并不是错误,只是时区转换后的正常结果。

本质上两者指向的是同一个时间点,只是用了不同时区的格式呈现。如果需要统一时区输出,可以借助Day.js的时区插件配置,或者在format()中指定UTC格式的字符串(比如format('YYYY-MM-DDTHH:mm:ss[Z]'))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:06:05