使用条件语句和 while 循环 JavaScript 计算 2 个日期之间的闰年
counting leap years between 2 dates using conditional statements & while loops JavaScript
我有一个更大的函数,它计算输入年,月和日之间的时间间隔,现在在JavaScript中。在我的函数的这一部分中,我正在测试哪一年更大(因为它的设计方式,它可以从过去或未来获取日期,并且可以计算时间间隔(......一开始,我计算了 UTC 的时间间隔,然后将其转换为天,最终我必须再次返回以年、月和天为单位的间隔,以便再次转换间隔。在本节中,我试图准确计算在时间跨度内发生了多少闰年,但由于输入日期可能是未来或过去,因此我设置了条件语句以查看哪个日期更大,以便我可以循环访问时间跨度。无论如何,我在创建这个函数(这只是我更大函数的一小部分(来测试闰年并添加到闰年计数(我希望返回,以便我可以准确地将间隔(以天为单位(转换为年、月和天时遇到了很多问题。我觉得我对所有这些条件语句的语法有点不对劲(几个月前我真的刚开始用 JavaScript 编程(,而且我不知道如何在测试之前的闰年算法测试中分配变量"year",所以我可以测试它,因为我希望年份是 2 年之间的所有年份(现在和年份然后(......无论如何,任何帮助将不胜感激:
var leapYear = function (inputYear, inputMonth, inputDay) {
var now = new Date();
var yearNow= now.getFullYear();
var then = new Date(inputYear, (inputMonth-1), inputDay);
var yearThen = then.getFullYear;
var leapYearCount = 0;
var beginYear = 0;
if (yearNow < yearThen)
beginYear = yearNow;
while (beginYear < yearThen) {
if ((year & 3) === 0 && ((year % 25) !== 0 || (year & 15) === 0))
leapYearCount += 1;
beginYear++;
}
if (yearThen < yearNow)
beginYear = yearThen;
while (beginYear < yearNow) {
if ((year & 3) === 0 && ((year % 25) !== 0 || (year & 15) === 0))
leapYearCount += 1;
beginYear++;
}
return leapYearCount;
};
编辑**我尝试将这里的"年份"设置为"开始年份",但最终在 489 年到现在之间得到了 2005 个闰年,这绝对不正确 - 我觉得我可能正在做其他事情这个函数中的错误,除了没有分配"年份"之外,但我不确定是什么......任何帮助将不胜感激。
这将计算您的闰年,请记住,如果是闰年,
它将当前年份也计为闰年,如果是闰年,则还将开始年计为闰年。
var countLeapYears = function(y,m,d){
var yearNow = new Date().getFullYear(),
yearThen = y,
beginYear = 0,
endYear = 0,
leapYearCount = 0;
var isLeapYear = function(year){
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
if(yearNow < y){
beginYear = yearNow;
endYear = y;
}else if(yearNow > y){
beginYear = y;
endYear = yearNow;
}else if(yearNow == y){
beginYear = y;
endYear = y;
}
for(i = beginYear; i <= endYear; i++){
if(isLeapYear(i)){
leapYearCount++;
}
}
return leapYearCount;
}
console.log(countLeapYears(2005,10,12)); // 3
console.log(countLeapYears(2020,10,12)); // 2
console.log(countLeapYears(2016,10,12)); // 1
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- moment.js在两个时区格式的日期之间存在差异
- 用时间戳获取两个不同日期之间的时间差
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 再次使用JavaScript计算两个日期之间的天数
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何使用moment.js获取24小时内日期之间的时差
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 夏令时期间不起作用的 2 个日期之间的小时差异
- v8::值到日期之间的转换
- 在ExtJS中获取开始/结束日期之间的日期
- 如何计算日期之间的差异
- 两个日期之间的月份差异,计算月份的最后日期
- JavaScript:获取MySQL时间戳和当前日期之间的天数差
- 从表列中检索日期,并根据从今天到日期之间的天数使行的颜色发生变化
- 获取两个日期之间的天数
- 计算日期之间的天数