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

使用Javascript计算两个日期差时获取NaN,javascript,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 d

我有以下代码。我试图计算日期差,但它的输出是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);

我不知道你为什么会得到NaN-我怀疑你运行的代码与你在这里展示的代码略有不同,但你应该知道浏览者将2018年9月1日解释为9月1日,而不是你预期的1月9日-使用Math.abs的结果是,你实际得到的值为242,我怀疑你在等8点

解决方案是使用不含糊的格式来指定日期,即yyyy-mm-dd。在所有情况下都会正确计算

下面的代码在Chrome、FF&IE/Edge上运行并给出了预期的答案

var start=2018-01-01;//yyyy-mm-dd格式 var end=2018-01-09 var date1=新的日期开始; var date2=新的Dateend; var timeDiff=Math.absdate1.getTime-date2.getTime; var diffDays=Math.ceilparseIntdate2-date1/24*3600*1000;
主控台:10天 下面的代码已经解决了这个问题。希望它也能帮助别人。谢谢大家

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);

您在哪个浏览器中运行此功能?Chrome browser.com在Chrome上运行得非常好。此外,从字符串生成日期时的格式是mm/dd/yyyyy,您可以显示console.log date1和date2的内容吗?