我试图确定一年是否是闰年。我不确定我在哪里遗漏了一些东西,因为这段代码是为了确定这一点。
感谢您的帮助。
let Year = (year) => {
this.year = year;
};
Year.prototype.isLeap = () => {
return (
this.year % 400 === 0 ||
(this.year % 4 === 0 && (this.year % 100 === 0))
);
};
let year = new Year(2014);
year.isLeap();
谢谢,我已经弄明白了。
最初我做的就是那些你们指向here的If语句,所以我现在正在重构一个更干净的代码。
我的代码在这一行有问题
(this.year % 4 === 0 && (this.year % 100 === 0))
正确的语法是
(this.year % 4 === 0 && !(this.year % 100 === 0))
答案 0 :(得分:6)
您可以查看给定年份的2月29日,看看它是否会在3月1日发生变化。
const date = new Date(this.year, 1, 29);
return date.getMonth() === 1;
如果getMonth()
返回1,那么它仍然是2月,这意味着它的闰年。
答案 1 :(得分:0)
Number.prototype.isLeap = function() {
return !(this % 4 || !(this % 100) && this % 400);
}
let year = 2000;
console.log(year.isLeap()); // prints true
year = 1900;
console.log(year.isLeap()); // prints false
year = 1904;
console.log(year.isLeap()); // prints true
year = 2003;
console.log(year.isLeap()); // prints false
答案 2 :(得分:0)
如果您删除 function 关键字,以下代码块将在Javascript和Typescript上正常运行。要了解此实现背后的逻辑,请查看此链接How to determine whether a year is a leap year。
function isLeapYear(year) {
let isLeapObj = {};
if ((year % 4 === 0 && year % 100 != 0) || year % 400 === 0) {
isLeapObj['isLeap'] = true;
isLeapObj['days'] = 366;
} else {
isLeapObj['isLeap'] = false;
isLeapObj['days'] = 365;
}
return isLeapObj;
}
x = isLeapYear(2020);
console.log(x);
对于Javscript,请使用以下代码
答案 3 :(得分:0)
关于上述@brenjt的答案,您可能希望将值29更改为30
const date = new Date(this.year, 1, 30);
if (date.getMonth() === 1) {
console.log("it's not a leap year");
} else {
console.log("it's a leap year");
}