JavaScriptで「うるう年」の判定はnew Date(y, 2, 0)を使用する

new Date(y, 2, 0)でうるう年判定

現在は2020年2月なので知らない人はいないと思うが2020年はうるう年となっている。

そのため私の会社でもうるう年の判定をJavaScriptで記述する機会があったのだが、部下に任せたら以下のようなコードで判定していた。

function isLeapYear(year) {
    return (year%4 == 0) && (year%100 != 0) || (year%400 == 0);
}

これでも判定可能だが、これだとコードが読みにくい。
(それ以前に某サイトのコピペ)

JavaScriptはnew Date(2020, 2, 0)のようにDateの第3引数に0を指定すると2月の最後の日が取得できる。

new Date(2020, 2, 0).getDate()
// => 29

そのため、これを使用して下記のように作成すれば簡単かつ簡潔にうるう年判定用の関数を作成することができる。

function isLeapYear(year) {
  return new Date(year, 2, 0).getDate() === 29;
}
 
console.log(isLeapYear(2015));
// => false
 
console.log(isLeapYear(2020));
// => true