如何在JAVASCRIPT中实现MS excel的EDATE()功能

如何在JAVASCRIPT中实现MS excel的EDATE()功能,javascript,excel,Javascript,Excel,我必须在JAVASCRIPT中实现MS Excel的EDATE功能 样本: EDATE(2020年8月6日,13日) 结果: 2021年9月6日没有此类功能,您必须自己构建。 首先,我从您的字符串生成一个JS日期。我从中提取年、月、日。 然后我将额外的月份加起来,并通过模12得到月份(JS中的月份计算为0-11)。如果月份是负数,我加上12个月。对于这一年,我加上从迪迪德月到12月的整数部分。 如果日期大于或等于29,并且是二月,并且是闰年(年模4为0),则日期设置为29。在所有其他情况下,该日

我必须在JAVASCRIPT中实现MS Excel的EDATE功能

样本:

EDATE(2020年8月6日,13日)

结果:
2021年9月6日

没有此类功能,您必须自己构建。

首先,我从您的字符串生成一个JS日期。我从中提取年、月、日。
然后我将额外的月份加起来,并通过模12得到月份(JS中的月份计算为0-11)。如果月份是负数,我加上12个月。对于这一年,我加上从迪迪德月到12月的整数部分。
如果日期大于或等于29,并且是二月,并且是闰年(年模4为0),则日期设置为29。在所有其他情况下,该日设置为本月的最小私密日和最大天数(存储在数组月中)。
现在我有了所需的日期,我只为return设置了格式:在字符串“0”之前加上两位数字,然后取最后两个字符。对于月份的缩写,我使用数组月份。

试试看。我给你们举了一些重要的例子,比如闰日和产生年际变化的负/正月份

函数edate(日期字符串,monthExtra){
施工天数=[31,28,31,30,31,30,31,31,30,31,30,31,30,31];
恒月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
let date=新日期(日期字符串);
让year=-date.getFullYear();
let month=date.getMonth();
let day=date.getDate();
设月数=月数+月数;
月=月数%12;
如果(月<0){
月=12+月;
}
年=年+数学楼层(月数/12);
如果(日期>=29&&month==1&&(年份%4==0)){
日=29;
}否则{
天=数学.min(天,天[月]);
}
返回(“0”+天)。切片(-2)+'-'+月[月]+'-'+年;
}
控制台日志(edate('06-Aug-2020',13));
控制台日志(edate('2020年1月30日',-13));
控制台日志(edate('2019年1月30日'1));

控制台日志(edate('2020年3月29日',-13))请澄清您到底想要什么。你需要知道EDATE算法是如何工作的吗?是的,它是一种算法