web関連

【javascript】うるう年かどうか判別する方法

うるう年そのものをあまり理解してなかったので備忘録

うるう年とは

うるう年(閏年)とは2月29日が存在する年で1年が366日になる
うるう年じゃない年は平年と呼ぶ
うるう年の計算方法は

  • 1.西暦年が4で割り切れる年は(原則として)閏年
  • 2.西暦年が100で割り切れる年は(原則として)平年
  • 3.西暦年が400で割り切れる年は必ず閏年

コードにすると

const isLeapYear = year => {
	 if (year % 4 == 0) {// 4で割り切れる(うるう年)
		if (year % 100 == 0) {// 100で割り切れる(平年)
			if (year % 400 == 0) {// 400で割り切れる(うるう年)
				return true;// うるう年
			}else{// 400では割り切れない(平年)
				return false;// 平年
			}
		}else{// 100で割り切れない(うるう年)
			return true;// うるう年
		}
	 }else{// 4で割り切れない(うるう年)
		return false;// 平年
	 }
}
console.log(isLeapYear(2020));// うるう年

短くすると

const isLeapYear = year => {
	return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
console.log(isLeapYear(2020));// true(うるう年)

「4で割り切れて100で割り切れなければうるう年」か「400で割り切れればうるう年」で条件分岐させてる

もう1パターンやり方があって、Dateオブジェクトで2月29日があるかどうか判別する方法

Dateオブジェクトを使ってうるう年かどうか判別する方法

Dateオブジェクトで2月の月末を取得することができる

console.log(new Date(2020, 2, 0));
// Sat Feb 29 2020 00:00:00 GMT+0900 (日本標準時)

これを応用すれば2月29日か存在する(うるう年)かどうか判別することができる

const isLeapYear = year => {
	return new Date(year, 2, 0).getDate() == 29;
}
console.log(isLeapYear(2020));// true(うるう年)
他の言語は知らないけどjavascriptは簡単に求められる

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。