我有以下代码。我正在尝试计算日期差异,但它的输出是 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 - 我怀疑你运行的代码与你在这里显示的代码略有不同,但你应该知道浏览器正在解释 09/01/2018
是 9 月 1 日,而不是您期望的 1 月 9 日 - 并且由于使用 Math.abs
你实际上得到的值为 242,我怀疑你期望的是 8。
解决方案是使用明确的格式来指定日期,即 yyyy-mm-dd
。在所有情况下都会正确评估这一点。
以下代码可以在 Chrome、FF 和 IE/Edge 上运行(并给出预期的答案)
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);
关于javascript - 使用 Javascript 计算两个日期之差时获取 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487239/