我需要一个JavaScript函数,它返回每年特定日期剩余的天数。
我找到了以下代码,但是如何让它每年都可重复,而不是手动更改函数中的年份?
function daysUntil(year, month, day) {
var now = new Date(),
dateEnd = new Date(year, month - 1, day), // months are zero-based
days = (dateEnd - now) / 1000/60/60/24; // convert milliseconds to days
return Math.round(days);
}
daysUntil(2013, 10, 26);
我认为上面的问题不够清楚,我需要在10月26日显示剩余的日子。因此,每年10月27日再次开始。我不需要循环。
答案 0 :(得分:2)
“我怎样才能让它每年重复一次,而不是手动改变功能年份?”
嗯,你无法在每年年无限地做,但你可以轻松添加一个循环来获得特定的年份:
var d;
for (var y = 2013; y < 2099; y++) {
d = daysUntil(y, 10, 26);
// do something with d, e.g.,
console.log(d);
}
更新:您已将此详细信息添加到您的问题中:
“我认为上面的问题不够明确,我需要在10月26日显示剩余时间。所以每年10月27日再次开始。我不需要循环。”
好的,那仍然不是很清楚,但我想你说你的输入只是日期和月份而你想要计算直到那天下一次的天数/月滚动,例如,到下一个生日的天数。如果是这样,也许是这样的:
function daysUntil(month, day) {
var now = new Date(),
currentYear = now.getFullYear(),
dateEnd = new Date(currentYear, month - 1, day); // months are zero-based
if (dateEnd - now < 0) // have we already passed that date this year?
dateEnd.setFullYear(currentYear + 1);
return Math.ceil((dateEnd - now) / 1000/60/60/24);
}
console.log(daysUntil(10,11)); // 365 - results from today, Oct 11
console.log(daysUntil(10,26)); // 15
console.log(daysUntil(7,7)); // 269