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は簡単に求められる