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

使用Moment.js生成YYYY-MM-DD日期时返回时间戳的问题

问题原因及解决方法

你的代码存在两个关键问题,导致结果不符合预期:

1. 日期解析格式不匹配

你将year + month + day拼接成了无分隔符的字符串"20231020",但却要求Moment.js按照"YYYY-MM-DD"(带横杠分隔)的格式去解析。两种格式完全不匹配,Moment无法正确识别该日期,因此解析出了错误的时间(你看到的1643950800000是错误日期对应的时间戳)。

2. 未调用格式化方法

即便解析正确,直接console.log(date)打印的是Moment对象本身,控制台会显示其内部的时间戳或对象结构,而非你需要的YYYY-MM-DD格式字符串。必须调用Moment的.format()方法才能生成指定格式的日期字符串。


修正后的代码示例

方式一:构造匹配格式的字符串解析

var year = "2023";
var month = "10";
var day = "20";
// 拼接带横杠的标准日期字符串
var dateStr = `${year}-${month}-${day}`;
var date = moment(dateStr, "YYYY-MM-DD");
// 调用format方法输出指定格式
console.log(date.format("YYYY-MM-DD")); // 输出:2023-10-20

方式二:直接传入年、月、日参数(推荐)

注意:Moment.js的月份是0索引(1月对应0,10月对应9),所以需要将输入的月份减1:

var year = "2023";
var month = "10";
var day = "20";
// 转换为数字并调整月份索引
var date = moment([parseInt(year), parseInt(month)-1, parseInt(day)]);
console.log(date.format("YYYY-MM-DD")); // 输出:2023-10-20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:26