使用Javascript计算两个日期的差异时获取NaN

时间:2018-01-28 14:11:46

标签: javascript

我有以下代码。我正在尝试计算日期差异,但它的输出是NaN。知道我哪里错了吗?

    var start = "01/01/2018"; //dd/mm/yyyy format
    var end = "09/01/2018"
    var date1 = new Date(start);
    var date2 = new Date(end);

    var timeDiff = Math.abs(date1.getTime() - date2.getTime());
    var diffDays = Math.ceil(parseInt((date2 - date1) / (24 * 3600 * 1000)));

    alert(diffDays);

2 个答案:

答案 0 :(得分:0)

已通过以下代码解决。希望它也能帮助别人。谢谢大家

var start = "01/01/2018";


var startD = new Date(start);
var end = "09/01/2018";
var endD = new Date(end);


var report_date_string = new String(start);
var rectify_date_string = new String(end);

var report_date_final = report_date_string.split('/');
var month1 = report_date_final[0];
var day1 = report_date_final[1];
var year1 = report_date_final[2];

var rectify_date_final = rectify_date_string.split('/');
var month2 = rectify_date_final[0];
var day2 = rectify_date_final[1];
var year2 = rectify_date_final[2];

var report_datetime = new Date(year1,  day1,month1 - 1);


var rectify_datetime = new Date(year2, day2,month2 - 1);


var diff = Math.abs(((rectify_datetime.getTime() - report_datetime.getTime()) / (24 * 3600 * 1000)));

alert(diff);

答案 1 :(得分:-1)

我不知道为什么你会得到NaN - 我怀疑你在运行与你在这里展示的内容略有不同的代码,但你应该知道,当你在9月1日解释09/01/2018时,不是你想象中的1月9日 - 并且由于使用Math.abs你实际上得到242的值,我怀疑你在期待8。

解决方案是使用非模糊格式指定日期,即yyyy-mm-dd。在所有情况下都可以正确评估。

以下代码适用于Chrome,FF& IE /边



var start = "2018-01-01"; // yyyy-mm-dd format
var end = "2018-01-09"
var date1 = new Date(start);
var date2 = new Date(end);

var timeDiff = Math.abs(date1.getTime() - date2.getTime());
var diffDays = Math.ceil(parseInt((date2 - date1) / (24 * 3600 * 1000)));

console.log(diffDays);