【JavaScript】2022年までのカウントダウンタイマーを作ってみた

こんにちはkazuです。
本日はjavascriptで2022年までのカウントダウンタイマーを作ってみましたので、
そのコードを解説していきます。

アプリの説明

まずは、アプリの説明をしていきます。
といってもたいして説明することはなく
ただ2021現時点から2022年1月1日0:00までの
カウントダウンを行うアプリになります。
今回もレイアウト自体はHTMLしかしようしていないので、
しょぼいレイアウトですがjavascriptの解説なので
そこはご了承ください。
以下アプリ画像です。

ではイメージがついたと思いますので、実際にコードを見てみましょう。

コードを確認する

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>CountdownTimer</title>
    </head>
    <body>
        <h1 class="countdown-title">
            <span id="year" ></span>
            年度 カウントダウン
        </h1>
        <div>
            <span id="days"></span>
            日
        </div>

        <div>
            <span id="hours"></span>
            時
        </div>

        <div>
            <span id="minutes"></span>
            分
        </div>

        <div>
            <span id="seconds"></span>
            秒
        </div>
        <script>
            // 今年の値を取得
            const current_year = new Date().getFullYear();
            // 来年の値を取得
            const next_year = current_year + 1;
            const new_year_time = new Date(`January 01 ${next_year} 00:00:00`);
            document.getElementById('year').innerHTML = next_year;
            // カウントダウンの関数
            function update_countdown() {
                // 現在の時刻情報を取得する
                const current_time = new Date();
                // 現在の時間と新年の時間の差を計算する(ミリ秒単位)
                const diff = new_year_time - current_time;
                // 現在から新年までの日数を計算
                const day = Math.floor(diff / 1000 / 60 / 60 / 24);
                // 時間を計算
                const hour = Math.floor(diff / 1000 / 60 / 60) % 24;
                // 分を計算
                const minute = Math.floor(diff / 1000 / 60) % 60;
                // 秒を計算
                const second = Math.floor(diff / 1000) % 60;
                document.getElementById('days').innerHTML = day;
                // 三項演算子 10以下の数値は0がつく
                document.getElementById('hours').innerHTML = hour < 10 ? '0' + hour : hour;
                document.getElementById('minutes').innerHTML = minute < 10 ? '0' + minute : minute;
                document.getElementById('seconds').innerHTML = second < 10 ? '0' + second : second;
            }
            // ページロード時に関数を実行
            update_countdown();
            // 1秒ごとに関数を実行
            setInterval(update_countdown, 1000);
        </script>
    </body>
</html>

最後に

いかがでしたでしょうか?
今回と前回でjavascriptで「時間」を使ったコードを書いてみました。
時間についてはjavascriptに限らず実務で使用する機会があると思いますので、
知っておいて損はないと思います。
最後までご覧いただきありがとうございました。

関連記事

こんにちはkazuです。 本日はjavascriptでアラームとタイムセールを知らせるプログラムを作ってみたので、 そのコードを解説していきます。 はじめに 今回はどのようなプログラムを作ったかといいますと、 特定の時間を変数に入[…]