我正在创建一个 jQuery UI slider ,需要创建从 2015 年 1 月 19 日到今天 2017 年 5 月 6 日的日期范围。
我计算出这些日期之间有 777 天。
但是,当我在 JavaScript 中执行此操作时,时间为 30 天。
var startDate = new Date(2015, 1, 19);
var endDate = new Date();
var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
$("#result").html(diffDays);
$("#diff").html(777 - diffDays);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
JS: <span id="result"></span><br>
Actual: 777<br>
Difference: <span id="diff"></span>
我的代码没有发现任何错误,因为我在其他地方使用过它并且它运行正常。
最佳答案
JavaScript 中的月份是从零开始的,因此一月是 0
,而不是 1
var startDate = new Date(2015, 0, 19);
var endDate = new Date();
var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
var diffDays = Math.floor(timeDiff / (1000 * 3600 * 24));
$("#result").html(diffDays);
$("#diff").html(777 - diffDays);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
JS: <span id="result"></span><br>
Actual: 777<br>
Difference: <span id="diff"></span>
另请注意,我将 ceil 更改为 Floor
关于JavaScript 日期月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630384/