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

为何moment.js的.add方法无法被识别?代码报错求助

为什么Moment.js的.add()方法报错“不是可识别函数”?

这个问题的核心是你搞混了Moment对象和它格式化后返回的字符串的区别!

看你写的这行出问题的代码:

this.futuredate= () => (`${now.format(dateFormat1).add('days', 5)}`);

now.format(dateFormat1)执行后,返回的是一个字符串类型的日期(比如"10252024"),而字符串是没有.add()方法的——这就是你收到报错的直接原因。你提到数值类型的Begindate能正常工作,应该是因为那个变量直接持有Moment对象,不是格式化后的字符串。

修正方案

你需要先对Moment对象调用.add()方法修改日期,再调用.format()来格式化输出。另外注意两个细节:

  1. Moment的.add()方法推荐的参数顺序是「数值在前,单位在后」,或者用对象形式(比如.add({days:5})),这是更清晰且符合新版规范的写法;
  2. 直接调用now.add()会修改原Moment对象,导致后续使用now时日期已经被改变,所以最好用.clone()复制一个新实例再修改,避免污染原有数据。

修正后的完整代码如下:

moment=require('moment'); 
const now= moment(); 
const dateFormat1 = 'MMDDYYYY'; 

this.todaysdate = () => now.format(dateFormat1); // 可以简化模板字符串的写法

this.futuredate= () => {
  // 先克隆原对象,再添加天数,最后格式化
  return now.clone().add(5, 'days').format(dateFormat1);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:30