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

JavaScript获取当月首日日期结果不一致的原因咨询

日期输出差异的原因分析

核心问题:时区不匹配

你的代码里的toISOString()方法会强制把日期转换为UTC标准时区的字符串,但本地运行环境使用的是本地时区(比如国内常用的UTC+8东八区),两者的时间差导致了日期显示偏差:

  • 当本地时区创建当月第一天的日期(例如2023-02-01 00:00:00),对应的UTC时间其实是前一天的2023-01-31 16:00:00,用slice(0,10)截取ISO字符串自然会得到2023-01-31。
  • 在线编译器的运行时区默认是UTC,所以生成的日期转成ISO字符串后就是预期的当月第一天。

解决方法

直接绕开时区转换的问题,用本地时区的日期方法拼接正确格式:

let date = new Date();
let year = date.getFullYear();
// 月份从0开始计数,需加1后补零确保两位格式
let month = String(date.getMonth() + 1).padStart(2, '0');
let first_date = `${year}-${month}-01`;
console.log(first_date);

或者用本地化日期方法处理(需注意浏览器兼容性):

let firstDateObj = new Date(date.getFullYear(), date.getMonth(), 1);
let first_date = firstDateObj.toLocaleDateString('zh-CN', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
}).replace(/\//g, '-');
console.log(first_date);

内容的提问来源于stack exchange,提问作者Lokeesh Bharathi S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:40:59