【JavaScript】日付のチェックを行う方法

JavaScriptを使って日付の有効性をチェックする方法はいくつかありますが、この記事では主に正規表現とDateオブジェクトを使った方法に焦点を当てます。日付のフォーマットが特定の形式に従っているかどうかを確認するための方法として、以下の手順を紹介します。

スポンサーリンク

正規表現を使用した日付チェック

JavaScriptの正規表現を使うことで、特定の日付フォーマットが満たされているかどうかを簡単に判定することができます。

function isValidDate(dateString) {
    var pattern = /^\d{4}-\d{2}-\d{2}$/; // yyyy-mm-dd形式の正規表現パターン
    return pattern.test(dateString);
}

// 使用例
console.log(isValidDate('2024-07-13')); // true
console.log(isValidDate('2024/07/13')); // false
console.log(isValidDate('24-07-13'));   // false

Dateオブジェクトを使用した日付チェック

JavaScriptのDateオブジェクトを使って、実際に日付が有効であるかどうかを確認することもできます。

function isValidDate(dateString) {
    var dateObj = new Date(dateString);
    return !isNaN(dateObj.getTime());
}

// 使用例
console.log(isValidDate('2024-07-13')); // true
console.log(isValidDate('2024/07/13')); // true (Dateオブジェクトが解釈可能な形式)
console.log(isValidDate('24-07-13'));   // false
console.log(isValidDate('2024-02-31')); // false (存在しない日付)

よくある質問(FAQ)

Q. JavaScriptで日付のフォーマットが正しいか確認するには?
A. new Date(str).toString() !== “Invalid Date”で確認できます。より厳密にはyyyy-mm-dd形式の正規表現で構文チェックしてから日付の妥当性をDateオブジェクトで確認します。
Q. 日付文字列が特定のフォーマットかどうか検証するには?
A. /^\d{4}-\d{2}-\d{2}$/.test(str)でYYYY-MM-DD形式をチェックできます。フォーマットチェック後にDateオブジェクトを作成し、getTime()がNaNでないことで妥当性も確認します。
Q. 2月30日のような無効な日付をチェックするには?
A. new Date(“2023-02-30”)は自動で繰り越されるため無効にはなりません。入力の月日が元の値と一致するか確認します。例:dateObj.getMonth()+1 === inputMonth && dateObj.getDate() === inputDay。

まとめ

この記事では、JavaScriptを使用して日付の有効性をチェックするための基本的な手法について紹介しました。プロジェクトのニーズに応じて、正規表現やDateオブジェクトを使った方法を選択し、適切な日付検証ロジックを実装することが重要です。これにより、ユーザーが入力した日付が正しい形式であることを確認し、データの信頼性を向上させることができます。