时刻不同的月数

时间:2018-02-17 19:59:37

标签: javascript momentjs

计算两个日期之间的月数。

 let start = moment(latestDateAvailable.Date);
      console.log("Start: ", start);
      let end = moment(dateToGet);
      console.log("End: ", end);
let duration = moment.duration(start.diff(end, 'months'));
      let m = duration.asMonths();
      console.log("Months: ", m);

enter image description here

我期待1,但结果是0?

1 个答案:

答案 0 :(得分:0)

这就是应该如何运作的。 2月21日至3月3日之间的差异不是整整一个月 - 因为第二个日期必须是3月21日。

请参阅momentjs documentation

  

默认情况下,moment#diff会将结果截断为零小数位,返回一个整数。如果需要浮点数,请将true作为第三个参数。

查看第三个参数设置为true的内容:

var feb21 = moment([2018, 2, 21]),
    mar03 = moment([2018, 3,  3]),
    mar21 = moment([2018, 3, 21]);

console.log(mar03.diff(feb21, 'months', true)); // 0.41857
console.log(mar21.diff(feb21, 'months', true)); // 1
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>

文档仍在继续:

  

moment#diff对月份和年份差异进行了一些特殊处理。它经过优化,可以确保相同日期的两个月总是相隔一个整数。

     

1月15日至2月15日应该是1个月。

     

2月28日至3月28日应该是1个月。

任何更少的内容都会被截断为零。