お世話になっております。
プログラマー駆け出しJavaScriptを独学で学習中の者です。
下記のようなプログラムを行い、Date型の比較をした際に一部不可解な結果が出力されてしまいます。
JavaScript
1var date1 = new Date("2020-11-25"); 2var date2 = new Date("2020-11-24"); 3 4//date1がdate2以上の場合エラー出力 5if (date1 >= date2 ) { 6 alert("日付入力エラー"); 7};
日付がdate1とdate2共に月の単位が2桁の場合は、想定通りの動きをするのですが、月の単位が1桁の場合、エラーをキャッチするif文に該当しないようで素通りしてしまいます。
両方の月、もしくはどちらかの月が1桁の場合でもエラーは出力されませんでした。
[2020.11.24 - 追記]
■エラーを出力する条件
date1がdate2以上の日付である場合、エラーを知らせるアラートを出力
■エラーが出力される日付パターン
date1 = new Date("2020-11-25" + "T00:00:00")
date2 = new Date("2020-11-24" + "T00:00:00")
//Console.log出力値
date1 = Wed Nov 25 2020 00:00:00 GMT+0900 (日本標準時)
date2 = Tue Nov 24 2020 00:00:00 GMT+0900 (日本標準時)
■エラーが出力されない日付パターン
date1 = new Date("2020-9-25" + "T00:00:00")
date2 = new Date("2020-9-24" + "T00:00:00")
//Console.log出力値
date1 = Invalid Date
date2 = Invalid Date
追記をしていて気付いたのですが、月が一桁の時日付がエラーが出力されていないのは、変数が日付として認識していないのが問題のようです。
※恥ずかしながらConsole.logの使い方をつい先程知りました。
日付として認識されないのはなぜでしょうyか?
有識者の皆様アドバイスをお願いいたします。
■動作環境
・Windows10
・XAMPP Ver7.4.1(最新)
回答4件
あなたの回答
tips
プレビュー