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

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

最佳答案

我不知道为什么你得到 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/

相关文章:

javascript - 保持图像宽高比并在 div 内

javascript - 如何使用 JavaScript 更改表格中的列宽?

javascript - Three.jscamera.rotation.y到360度转换

jquery - 公式居中模态

javascript - CodeMirror - 语言自动检测

javascript - document.getElementsByClassName() 不像 getElementById 那样工作?

javascript - javascript 中的函数 - 定义和调用它们,有或没有函数名

javascript - 为什么 SP.js 没有加载?

javascript - 尝试创建由 Canvas 中的按钮单击触发的撤消功能

javascript - 如果键是字符串,数组显示为空?