momentjs 如何处理以月或年为单位的加法或减法

我的问题是当闰年或月份中的日期不同时,momentjs 如何处理月份或年份的加法或减法,例如三月有 31 天,四月有 30 天

一个例子是它是否将其30.4167 days默认设置为几个月,或者它是否对不同年份的一个月中有多少天或三月或四月之间有多少天进行了一些计算

moment().add(1, 'months');这等于30.4167 days每个月还是730.001 hours每个月?

momentjs 如何处理这个


隔江千里
浏览 290回答 2
2回答

繁星淼淼

如果没有 moment.js,这个解决方案似乎运行良好。基本上将月份设置为当前月份+月份数。这导致的一个问题是,将 1 个月添加到第 31 天,而下个月只有 30 天,那么您将得到下个月的第 1 天。要解决此问题,您可以检查它。如果这个月的新一天与原来的不同,那么我们就溢出了,我们可以将这一天设置为 1 并减去 1 天来处理这个问题。下面是一个示例,如果您运行,您还会看到 2 月 28 日和 29 日的闰年差异。const aday = 1000 * 60 * 60 * 24;function addMonth(dt, m) {&nbsp; const r = new Date(dt);&nbsp; r.setMonth(r.getMonth() + m);&nbsp; if (dt.getDate() !== r.getDate()) {&nbsp; &nbsp; r.setDate(1);&nbsp; &nbsp; r.setTime(r.getTime() - aday);&nbsp; }&nbsp; return r;}const first = new Date("2019-12-31");for (let l = -10; l < 10; l += 1) {&nbsp; const second = addMonth(first, l);&nbsp; console.log(`${second.toDateString()} - ${l} months`);}

慕村9548890

var&nbsp;currentDate&nbsp;=&nbsp;moment('2015-11-31'); var&nbsp;addMonth&nbsp;=&nbsp;moment(currentDate).add(1,&nbsp;'M');多年var&nbsp;addYear&nbsp;=&nbsp;moment(currentDate)..add('years',&nbsp;1).format('L');
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript