AngularJS - 两个日期之间的Javascript天数

时间:2016-08-18 02:37:50

标签: javascript angularjs

我有以下格式的两个日期 - 从Web服务返回:

var dateone = "2016-08-21T07:00:00.000Z";
var datetwo = "2016-08-28T07:00:00.000Z";
var datediff = datetwo - dateone;
var numdays = Math.round(datediff);
console.log("Number of Days is " + numdays);

我得到NaN。我在这里缺少什么?

4 个答案:

答案 0 :(得分:3)

dateonedatetwo个变量String不是Date。 试试这个:

var dateone = new Date("2016-08-21T07:00:00.000Z"); 
var datetwo = new Date("2016-08-28T07:00:00.000Z");

此外,减去2 Date个对象将以毫秒为单位给出它们之间的差异,如果要确定天数,可以执行以下操作:

var dayDif = (datetwo - dateone)  / 1000 / 60 / 60 / 24;

答案 1 :(得分:1)

你可以轻松地使用moment.js

var a = moment('2016-08-21T07:00:00.000Z');
var b = moment('2016-08-28T07:00:00.000Z'); 
var days = b.diff(a, 'days');

JsFiddle

答案 2 :(得分:0)

除了Titus关于将它们变成日期而不是字符串的内容,请尝试这样的事情:

var oneDay = 24*60*60*1000; // Calculates milliseconds in a day
var diffDays = Math.abs((dateone.getTime() - datetwo.getTime())/(oneDay));

我不知道你对Math.round()的期望是什么,但是我没有看到它有多大帮助。 Math.abs()确保差值为正,而减去两个getTime()函数得到的差值以毫秒为单位。

希望这有帮助。

答案 3 :(得分:0)

let invitedDate = '2019-11-27T05:19:23.32';
let deference = new Date().getTime() - new Date(invitedDate).getTime();
let days = Math.round(Math.abs(deference / (1000 * 60 * 60 * 24)));

如果需要获取2个不同日期之间的时间差,可以使用Date.getTime()和上面邀请的Date示例来计算天数