【问题标题】:How to determine whether a year is a leap year in JavaScriptJavaScript中如何判断一年是否为闰年
【发布时间】:2018-10-20 06:13:45
【问题描述】:

我正在尝试确定一年是否是闰年。我不确定我在哪里遗漏了一些东西,因为这段代码旨在确定这一点。

感谢您的帮助。

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))

【问题讨论】:

标签: javascript datetime leap-year


【解决方案1】:

您可以只检查给定年份的 2 月 29 日,看看它是否更改为 3 月 1 日。

const date = new Date(this.year, 1, 29);
return date.getMonth() === 1;

如果getMonth() 返回 1,那么它仍然是 2 月,这意味着它的闰年。

【讨论】:

  • 虽然这提供了一种替代方法,但它并没有解决 OP 代码的根本问题。
【解决方案2】:
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

【讨论】:

    【解决方案3】:

    如果您删除 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);
    

    对于 JavaScript,请使用以下代码

    【讨论】:

      【解决方案4】:

      关于@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");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-02
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 2022-12-17
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        相关资源
        最近更新 更多