首页 > 解决方案 > 出于某种原因,答案总是 NaN,找不到两个日期之间的差异

问题描述

我发现今天的日期是错误的还是 st?我之前做过一个类似的代码(使用 input.value 而不是静态日期)并且它有效。我显然是初学者,所以这可能是一个非常简单的错误

function calculate2() {
    var date1 = new Date('15/02/2001'); 
    var date2 = new Date();  
    var timediff = Math.abs(date2.getTime() - date1.getTime());
    var days = Math.round(timediff / (1000 * 3600 * 24));
     
   var months = Math.round (days / 31);
    var years = Math.round (months / 12);
    var hours = Math.round (days * 24);
    var minutes = Math.round (hours * 60);
    var seconds = Math.round (minutes * 60);
	var weeks = Math.round (days / 7);
     var result = document.getElementById('result');
    result.value = years;
	var result1 = document.getElementById('result1');
    result1.value = months;
	var result6 = document.getElementById('result6');
	result6.value = weeks;
	var result2 = document.getElementById('result2');
    result2.value = days;
	var result3 = document.getElementById('result3');
    result3.value = hours;
	var result4 = document.getElementById('result4');
    result4.value = minutes;
	var result5 = document.getElementById('result5');
    result5.value = seconds;
}
<form>
<input type="result" id="result" name="result" readonly>
<input type="result" id="result1" name="result" readonly>
<input type="result" id="result6" name="result" readonly>
<input type="result" id="result2" name="result" readonly>
<input type="result" id="result3" name="result" readonly>
<input type="result" id="result4" name="result" readonly>
<input type="result" id="result5" name="result" readonly>
</form>

标签: javascriptdate

解决方案


new Date('15/02/2001')导致无效日期。在无效日期调用 .getTime 会返回 NaN

从字符串创建日期是一件棘手的事情,因为浏览器解析字符串的方式之间存在不一致。我建议以另一种方式创建日期。例如,构造函数允许您传递年、月、日的整数:

new Date(2001, 2, 15)

推荐阅读