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