在moment.js日期添加小数年份

时间:2017-09-20 19:37:25

标签: momentjs

如何将一个十进制/浮点值添加到moment.js日期对象?

moment('2017-09-20').add(1.234, 'years');

只会改变年份和月份,而不是一天。我期待那个时刻将计算'2017-09-20'加上一年的正确日期加上2018年第0.234位的最近日期。但它会打印出'2017-11-20'

1 个答案:

答案 0 :(得分:2)

您可以1.234年创建moment.duration,然后使用moment().add(Duration);创建add

修改

使用toISOString(),您可以看到

1.234年相当于1年和2.808个月。相同的持续时间等于451天。正如asDays()所述:

  

moment.duration().asDays()以天为单位获取持续时间的长度。

因此,您可以使用asDays()输出作为add(Number, String);的输入。

这是一个实例:



// Create moment duration for 1.234 years
var dur = moment.duration(1.234, 'years');
// 1.234 years is equal to 1 year and 2.808 months
console.log(dur.toISOString()); // P1Y2.808M
// 1.234 years is also equal to 451 days
console.log(dur.asDays()); // 451

// Add duration using moment().add(Duration);
var m1 = moment('2017-09-20').add(dur);
console.log(m1.format()); // 2018-12-20T00:00:00+01:00

// Add number of days
var m2 = moment('2017-09-20').add(dur.asDays(), 'd');
console.log(m2.format()); // 2018-12-15T00:00:00+01:00

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;