【改良版】2022年の税理士試験まであと何日?javascriptでカウントダウンタイマーを作りました。

2021年の税理士試験が先日終了しました。受験生の方はお疲れ様でした。

少しの間ではありますがゆっくりと休んでいただければと思います。

だいぶ気が早いですが、以前作ったカウントダウンタイマーを2022年の税理士試験用に改良して作り直しています。

改良した点に関して備忘記録として記事にしておきます。

2022年の税理士試験(仮)までのカウントダウンタイマー


2022年の税理士試験(簿記論)までのカウントダウンタイマーはこちらからどうぞ↓
ブックマーク等しておけばいつでも確認が可能です。

https://www.duty-cant-fail.com/javascript/2022timer/countdowntimer.html

なお、記事作成時点において2022年の税理士試験の日程が公表されていないため仮の試験日として2021年の試験日の1年後に設定しています。

2022年の税理士試験までのカウントダウンタイマーを表示するjavascript【改良版】

以前の記事で作成したjavascriptですが、先日税理士試験日にページを確認したところ、すでに試験が開始されているのにも関わらずプログラムが終了することなくカウントダウンタイマーが動き続けることが確認されました。

バグというやつです。

こんな感じでマイナス表示で変な感じではありますがタイマーが動き続けています。
もはやタイマーの役割はないのですが。


なので今回2022年のタイマーを作成するにあたってjavascriptのコードを一部追加することにしました。

ハイライト表示している箇所が今回追加した部分になります。
それ以外は以前の記事のjavascriptと全く同じになっています。

let show_day=document.getElementById("show_day");
let show_hour=document.getElementById("show_hour");
let show_minute=document.getElementById("show_minute");
let show_second=document.getElementById("show_second");
 
//税理士試験の日程を定義する
 
function tax_exam_day() {
     
    let exam_day= new Date();
    
    exam_day.setFullYear(2022);
    exam_day.setMonth(7); //0~11で1月~12月を定義するので注意
    exam_day.setDate(17);
    exam_day.setHours(9);
    exam_day.setMinutes(0);
    exam_day.setSeconds(0);
 
    return exam_day;
 
}
 
//現在時刻から税理士試験までの残り時間を計算する
 
function rest_time() {
     
    let exam_time = tax_exam_day();
 
    let now = new Date();
    let restall=exam_time.getTime()-now.getTime();

    //指定した日付を超えたらアラートを表示する

    if (restall<0) {
        alert("2022年の税理士試験は終了しました。");
        return;
    }

    let rest_second=Math.floor(restall/1000)%60;
    let rest_minute=Math.floor(restall/1000/60)%60;
    let rest_hour=Math.floor(restall/1000/60/60)%24;
    let rest_day=Math.floor(restall/1000/60/60/24);
 
    show_day.textContent=String(rest_day).padStart(2,"0");
    show_hour.textContent=String(rest_hour).padStart(2,"0");
    show_minute.textContent=String(rest_minute).padStart(2,"0");
    show_second.textContent=String(rest_second).padStart(2,"0");
     
    re_calculation(); //re_calculationファンクションを実行する
 
}
 
//1秒経過後にもう一度rest_timeファンクションを実行する。
 
function re_calculation() {
 
    setTimeout(rest_time,1000); 
 
}
 
rest_time(); //rest_timeファンクションを実行する。

ifで終了しているかどうかを判定する


カウントダウンが終了しているかを判定するためにifを使用しています。

具体的には「変数restallが0未満であれば」という条件に該当するとアラートで「2022年の税理士試験は終了しました」という文章を表示し、処理を終了します。

if (restall<0) {
alert(“2022年の税理士試験は終了しました。”);
return;
}

変数restallは下記のように定義されています。具体的には2022年の税理士試験の実施日(exam_time.getTime())から現在日時(now.getTime())を差し引いた残りの日数(秒数)が計算されています。

restall=exam_time.getTime()-now.getTime()

なのでrestallがマイナスになるということは現在日時の方が大きい。つまり税理士試験の実施が終了していることを意味します。

この考えをifに組み込んでいます。

処理を抜けるにはreturnを使う

ifに該当した際の処理を実施し、その後は処理を行わない場合、そこでjavascriptの処理を終了させないといけません。

このようにjavascriptの処理を途中で終了させるには「return;」を使用すると実現できます。

Excelマクロでいうところの「exit sub」というイメージで個人的には考えています。

タイマーが終了したらアラート表示でメッセージを表示する


タイマーが表示されないだけだとわかりにくいので、ページを開くとこんな感じでアラートを表示させることにしました。

その後画面にはタイマーは表示されません。

まとめ

2021年の税理士試験が終了しましたので「仮」ではありますが2022年の税理士試験のカウントダウンタイマーを作りました。

基本コピペしただけなのですが以前作ったプログラムのまずい点を改良しました。バグが見つかったらその都度改良することができるのが自分でプログラムを作ることの良い点でもあります。

この作業を面倒と感じるかどうかは人それぞれですが自分はあまり嫌いではありません。

もちろんバグがでないように最初から作れると一番いいのですが。。





【本日の近況報告】

連日雨が続き全国的にも被害がでている地域が多くなってきています。
特に九州地区の被害が大きく、祖母の住む長崎県雲仙市内でも土砂崩れの被害が出ています。

早く雨がやんでくれるといいのですが。。。

【本日の1曲】

lust for life/iggy pop

映画はあまり見ないので詳しくないのですが、好きな映画の1つに「トレインスポッティング」という映画があります。

友人がDVDを貸してくれて22歳くらいの時にみたと記憶してます。

その映画のなかでこの1曲がとてもいい感じに使われています。この映画は音楽もすごいカッコいい音楽が使われています。

最近、続編のトレインスポッティング2を見ましたがエンディングでこの曲がやはり使われていました。

登場人物の4人のなかではスパッドが一番気に入っています。