【PHP】文字列が、正しい日付フォーマットかどうか判定する。

PHPで、与えられた文字列が正しい日付フォーマットかどうか確認する方法はいろいろあるけれど、なかなか良いやり方を教えてもらった。正規表現によるチェックは必要なし。日付として正しい範囲かどうか('13月' だとか '2月30日' といった、不正な日付が指定されていないかどうか)も一撃で判別できます。シンプル。

以下のような関数を用意します。

function is_correct_date( $date , $format ){
    return $date === date( $format , strtotime($date) );
}

例えば、文字列が Y-m-d 形式の日付文字列であるかどうかを調べるには、上記の関数を以下のように使えばよろしい。

$testDate = '2024-09-19';
$format = 'Y-m-d' ;

if( is_correct_date( $testDate , $format ) ){
    // 正しい日付の場合の処理
}else{
    // 違う場合の処理
}

この例の場合は、もちろん true が返ってきます。

一方、例えば

  • $testDate = '2024/09/19' (フォーマットが指定した形式と異なる)
  • $testDate = '2024-9-19'  (同上)
  • $testDate = '2024-13-19' (ありえない日付)

…などの場合は、正しく false が返ってきます。

これは賢いやりかた。素晴らしい。

カテゴリ: