如何将一个十进制/浮点值添加到moment.js日期对象?
moment('2017-09-20').add(1.234, 'years');
只会改变年份和月份,而不是一天。我期待那个时刻将计算'2017-09-20'
加上一年的正确日期加上2018年第0.234位的最近日期。但它会打印出'2017-11-20'
。
答案 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;