我的问题是当闰年或月份中的日期不同时,momentjs 如何处理月份或年份的加法或减法,例如三月有 31 天,四月有 30 天一个例子是它是否将其30.4167 days默认设置为几个月,或者它是否对不同年份的一个月中有多少天或三月或四月之间有多少天进行了一些计算moment().add(1, 'months');这等于30.4167 days每个月还是730.001 hours每个月?momentjs 如何处理这个
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
如果没有 moment.js,这个解决方案似乎运行良好。
基本上将月份设置为当前月份+月份数。
这导致的一个问题是,将 1 个月添加到第 31 天,而下个月只有 30 天,那么您将得到下个月的第 1 天。
要解决此问题,您可以检查它。如果这个月的新一天与原来的不同,那么我们就溢出了,我们可以将这一天设置为 1 并减去 1 天来处理这个问题。
下面是一个示例,如果您运行,您还会看到 2 月 28 日和 29 日的闰年差异。
const aday = 1000 * 60 * 60 * 24;
function addMonth(dt, m) {
const r = new Date(dt);
r.setMonth(r.getMonth() + m);
if (dt.getDate() !== r.getDate()) {
r.setDate(1);
r.setTime(r.getTime() - aday);
}
return r;
}
const first = new Date("2019-12-31");
for (let l = -10; l < 10; l += 1) {
const second = addMonth(first, l);
console.log(`${second.toDateString()} - ${l} months`);
}
慕村9548890
TA贡献1884条经验 获得超4个赞
var currentDate = moment('2015-11-31'); var addMonth = moment(currentDate).add(1, 'M');
多年
var addYear = moment(currentDate)..add('years', 1).format('L');
添加回答
举报
0/150
提交
取消