我如何准确地在Moment.js中获得日子

时间:2017-12-27 10:23:54

标签: javascript angularjs momentjs

这是我从给定日期获得天数差异的代码。 我需要准确的日子,这里我正确的日子不同是'2' 但我得到1。 我正在使用moment.js进行角度操作。这不花时间。 我需要时间来获得结果。 我在日历中使用此代码,所以我也需要花时间。

var startdate=new Date('2017-12-30 06:00:00');
var enddate=new Date('2018-01-01 01:00:00');

var diff=  moment(enddate).diff(startdate, "days");
console.log(diff)

4 个答案:

答案 0 :(得分:2)

尝试使用startOf删除两个日期的时间部分。

moment(enddate).startOf('day').diff(moment(startdate).startOf('day'), 'days');

答案 1 :(得分:1)

试试这个vanilla JS解决方案

var numberOfDays = Math.ceil( ( enddate.getTime() - startdate.getTime() ) 
                     / ( 1000*60*60*24 ));

<强>演示

&#13;
&#13;
var startdate=new Date('2017-12-30 06:00:00');
var enddate=new Date('2018-01-01 01:00:00');
var numberOfDays = Math.ceil( ( enddate.getTime() - startdate.getTime() ) 
                     / ( 1000*60*60*24 ));
console.log( numberOfDays );
&#13;
&#13;
&#13;

答案 2 :(得分:1)

  

Difference 1.0.0+

     

...
  默认情况下,moment#diff会将结果截断为零小数位,返回一个整数。 如果您想要一个浮点数,请将true作为第三个参数。在2.0.0之前,moment#diff返回一个四舍五入到最接近的整数的数字,而不是截断的数字。

var startdate = new Date('2017-12-30 06:00:00');
var enddate = new Date('2018-01-01 01:00:00');

var diff = moment(enddate).diff(startdate, "days", true);

console.log(diff);            // 1.7916666666666667
console.log(Math.ceil(diff)); // 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

答案 3 :(得分:0)

var startdate=new Date('2017-12-30 06:00:00');
var enddate=new Date('2018-01-01 01:00:00');
console.log( moment(enddate).diff(startdate, 'days'))
console.log( moment(enddate).diff(startdate, 'weeks'))
console.log( moment(enddate).diff(startdate, 'hours')) 
console.log( moment(enddate).diff(startdate, 'minutes'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>