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

如何用MomentJS将YY-MMM格式日期转为Date对象并格式化?

解决MomentJS日期转换报错问题

错误原因

你写的代码报错,是因为format()方法会把Moment对象转换成字符串,而字符串并没有toDate()方法——toDate()是Moment实例专属的方法,只能在Moment对象上调用,不能用在格式化后的字符串上。

正确实现步骤

你的需求是把22-Mar转为当月第一天的01.03.2022格式,同时获取Date对象,正确的做法是先在Moment对象上完成日期调整,再分别获取Date对象和格式化字符串:

  1. 解析原始日期字符串,得到Moment对象
  2. 将日期设置为当月第一天
  3. 直接从Moment对象调用toDate()获取Date对象
  4. 调用format()得到指定格式的字符串

代码示例

// 解析"22-Mar"为Moment对象
const momentDate = moment('22-Mar', 'YY-MMM');
// 调整为当月第一天
momentDate.startOf('month');

// 获取Date对象(无需new Date())
const targetDate = momentDate.toDate();
// 获取格式化后的字符串"01.03.2022"
const formattedStr = momentDate.format('DD.MM.YYYY');

关键提示

  • 不要把format()和toDate()链式调用,因为format()返回的是字符串,不是Moment对象
  • 如果不需要调整日期(只是解析原始日期转Date),直接moment('22-Mar', 'YY-MMM').toDate()即可

内容的提问来源于stack exchange,提问作者Mihai Adrian Lungu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:30:57