MENU

JavaScript日付・時刻

【JavaScript】 うるう年判定の一番簡単な方法

更新日:2021/05/10

 

うるう年を判定するとき、西暦から計算で求めるのが一般的です。
しかしJavaScriptは既存のオブジェクトメソッドを一工夫することでうるう年判定可能です。

 

Dateオブジェクトを使用したうるう年判定

 

Dateオブジェクト作成時に2月29日を指定した場合、うるう年でなければ3月1日となります。

 

そこで、次のようなコードでうるう年かどうかを判定できます。

 

うるう年判定関数

 


const isLeapYear = year =>
        new Date( year + "/2/29" ).getMonth() === 1;

 

getMonth()は1月が0、2月が1なので、結果が1かどうかを比較しています。

一般的なうるう年判定

 

上記の関数はDateオブジェクトの作成がおこなわれるため、繰り返し呼び出される回数が多いなど処理速度が優先される場合は一般的な計算方法を選択したほうがいいです。

 

一般的に西暦が次の条件に合うとき、うるう年と判定されます。

 

うるう年の条件

4で割り切れる

 

ただし、例外として次の条件があります。

 

例外条件

100で割り切れて400で割り切れない年はうるう年ではない。

 

この条件を素直に関数化すると次のようになります。

 

うるう年判定関数

 


const isLeapYear = year => {
        if( year % 4 === 0 ) {
            if( year % 100 === 0 ){
                if( year % 400 !== 0 ) return false;
            }
            return true;
        }
        return false;
    }

 

if文を排除すると次のようになります。

 

うるう年判定関数

 


const isLeapYear = year => year % 400 === 0 
        ? true : ( year % 4 === 0 && year % 100 !== 0 );

 

そもそも400で割れればうるう年確定(4でも100でも割れる)なので最初にチェックし、その後4で割れて100で割れなければうるう年です。

 

コード的にはこちらの条件の方がシンプルですね。

 

けーちゃんおススメJavaScript入門書

  • スラスラ読める JavaScript ふりがなプログラミング
  • プログラム未経験者がJavaScript始めるならコレ!
    コードを掲載して自分で理解しろという投げっぱなしな入門書とは異なり、コードに一つ一つどんなことをやっているかをふりがなという形式で解説しています。
    それでいてJavaScriptの基礎と応用を学べる良書です。
  • これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん
  • JavaScriptの機能を実践で活かすにはHTMLやCSSの知識が不可欠です。
    しかしそれらの知識があることが前提として書かれている書籍が多い中、この本は総合的な知識を身に着けることができます。
    HTMLやCSSの知識も不安な方には、ぴったりの一冊です
  •  

    入門書の役割は、自分のやりたいことをネットで調べることができるようになるための、基礎的な知識の獲得です。
    まずはこれらの本でしっかりと基礎知識を身につけましょう。
    そしてもっと高度なことや専門的なことはネットで調べ、情報が足りないと感じたら書籍を購入してください。


    期間限定情報:
    6/21と6/22は年に一度のプライム会員大感謝祭!
    欲しかったアレが安く手に入るチャンスです
    忘れずにチェックしてください!
    僕は以前のタイムセール祭りで4Kモニタが買ったけど、それより安かったらどうしよう・・・

    ちなみにプライム会員でなくても、無料体験で参加できるようです。
    欲しい商品があるか、確認だけでもしておきましょう。

    記事の内容について

     

    こんにちはけーちゃんです。
    説明するのって難しいですね。


    「なんか言ってることおかしくない?」
    たぶん、こんなご意見あると思います。

    裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。

    そんなときは、ご意見もらえたら嬉しいです。

    ご意見はこちら。
    https://note.affi-sapo-sv.com/info.php

    【お願い】

    お願い

    ■このページのURL


    ■このページのタイトル


    ■リンクタグ


    ※リンクして頂いた方でご希望者には貴サイトの紹介記事を作成してリンクを設置します。
    サイト上部の問い合わせよりご連絡ください。
    ただしサイトのジャンルによっては、お断りさせていただくことがあります。