如何用MomentJS将YY-MMM格式日期转为Date对象并格式化?
解决MomentJS日期转换报错问题
错误原因
你写的代码报错,是因为format()方法会把Moment对象转换成字符串,而字符串并没有toDate()方法——toDate()是Moment实例专属的方法,只能在Moment对象上调用,不能用在格式化后的字符串上。
正确实现步骤
你的需求是把22-Mar转为当月第一天的01.03.2022格式,同时获取Date对象,正确的做法是先在Moment对象上完成日期调整,再分别获取Date对象和格式化字符串:
- 解析原始日期字符串,得到Moment对象
- 将日期设置为当月第一天
- 直接从Moment对象调用
toDate()获取Date对象 - 调用
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
相关产品推荐
相关产品推荐

