我想使用while循环从一个日期计算到另一个日期并计算第一天+ 1直到它到达最后日期。
例如:
var start = new Date(2011, 08, 15);
var end = new Date(2017, 09, 28);
var expired = false;
while (!expired) {
// very first iteration would count day + 1 so it will be 2011-08-16
// and so on till 2017-09-28
// check if end date and set expired to true, finished while loop
}
alert("Finished!");
我不知道该如何做到这一点(其他anwers没有帮助)。有什么想法吗?
答案 0 :(得分:1)
您可以在start.setDate(start.getDate() + 1)
中使用 .getDate()
和 .setDate()
方法将日期增加一天,这就是应该是你的代码:
while (!expired) {
start.setDate(start.getDate() + 1);
// and so on till 2017-09-28
if(dateDiffInDays(start, end) == 0) {
expired = true;
}
count++;
}
console.log(count);
alert("Finished!");
<强>演示:强>
// A useful function to get dates diff in days gotten from: https://stackoverflow.com/a/15289883/3669624
function dateDiffInDays(a, b) {
var _MS_PER_DAY = 1000 * 60 * 60 * 24;
var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}
var start = new Date(2011, 08, 15);
var end = new Date(2017, 09, 28);
var expired = false;
var count =0;
while (!expired) {
start.setDate(start.getDate() + 1);
// and so on till 2017-09-28
if(dateDiffInDays(start, end) == 0) {
expired = true;
}
count++;
}
console.log(count);
alert("Finished!");
start
日期将在每次迭代中增加一天,直到达到end
日期的同一天,最后到最后count
变量将保持两天之间的日期这两天。
答案 1 :(得分:0)
使用getDate
方法
var start = new Date(2011, 08, 15);
var end = new Date(2017, 09, 28);
var expired = false;
var count = 0;
while (!expired) {
count++;
if(start.getYear() == end.getYear() && start.getMonth() == end.getMonth() && start.getDate() == end.getDate()){
expired = true;
}
start.setDate(start.getDate()+1);
}
console.log(count);
alert("Finished!");
答案 2 :(得分:0)
您可以使用getTime()
方法。
getTime()
将日期转换为毫秒。start
。注意强>
new Date(2011, 08, 15)
是2011年9月15日,而不是8月。
new Date(2017, 09, 28)
是2017年10月28日,而不是9月。
请参阅this作为参考,或查看下面的代码段。
var start = new Date(2011, 08, 15).getTime(); // convert time into milliseconds
var end = new Date(2017, 09, 28).getTime(); // convert time into milliseconds
var expired = false;
var count = 0;
/* NOT 15 AUGUST 2011 */
console.log(new Date(2011, 08, 15).toString());
console.log(new Date(2017, 09, 28).toString());
/* NOT 28 SEPTEMBER 2017 */
while (!expired) {
start += 24*60*60; // One day has 24 hours * 60 minutes * 60 seconds = 86400 seconds
count++;
if (start >= end) expired = true;
}
alert(`Days In Between: ${count} days`);
&#13;