比较moment.js上的日期

时间:2017-08-14 19:54:02

标签: javascript jquery momentjs

我正在使用图书馆moment.js来获取两个日期之间的差异..代码工作正常..但是这只需要一个月,当他们是同一天例如:first date = 2017-08- 14,第二个日期= 2017-09-14 ...仅在这种情况下考虑到整个月,现在我的问题是某种方式,如果第二个日期是:2017-09-12例如..我已经采取考虑到一个月?

我留下我的小代码。



var date1 = moment('2017-08-14');
var date2 = moment('2017-09-12');
var result = date2.diff(date1, 'months');
console.log(result);

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

2 个答案:

答案 0 :(得分:3)

According to the documentation .diff()将在值为正时向下舍入,在值为负时向上舍入(即正值<1将向下舍入为0):

  

默认情况下,时刻#diff将返回一个向零舍入的数字(向下为正数,向上为负数)。如果需要浮点数,请将true作为第三个参数传递。

如果您想要一个浮点数,只需执行以下操作:

var result = date2.diff(date1, 'months', true);

您可以应用自己的舍入/缩小首选项。如果要舍入到最近的月份,请使用:

var result = Math.round(date2.diff(date1, 'months', true));

&#13;
&#13;
var date1 = moment('2017-08-14');
var date2 = moment('2017-09-12');
var result = date2.diff(date1, 'months', true);
console.log(result);
&#13;
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

在相关说明中,如果您想检测两个日期之间是否跨越了一个月边界(例如,您希望2017年8月31日与2017年9月1日之间的差异计为一个月的差异,因为从8月到9月的月份变化),您只需使用.month()从日期中提取月份并自行计算差异:

&#13;
&#13;
var date1 = moment('2017-08-31');
var date2 = moment('2017-09-01');
var result = date2.month() - date1.month();
console.log(result);
&#13;
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

只需为函数(true)提供一个额外的参数,根据moment.js文档,它是:

  

默认情况下,moment#diff会返回一个舍入为零的数字(向下为正数,向上为负数)。如果需要浮点数,请将true作为第三个参数。在2.0.0之前,moment#diff返回一个舍入到最近的数字,而不是舍入为零的舍入数字。

&#13;
&#13;
var date1 = moment('2017-08-14');
var date2 = moment('2017-09-12');
var result = date2.diff(date1, 'months', true);
console.log(result);
&#13;
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;