PHPで日付が正しいかチェックする方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPで日付の妥当性をチェックするプログラムです。

checkdate()を使えばうるう年にも対応したチェックが簡単にできます。

日付の形式だけをチェックするならstrptime()でサクッとチェックできますよ。

checkdate関数

checkdate()は日付をチェックし、存在していればtrueを、存在していなければfalseを返します。

以下のように引数に年月日をカンマ区切りで入れるだけです。

日本の日付と違って、年は最後になりますので注意しましょう。

checkdate(月, 日, 年);

日付が存在するか、if文を使って簡単なプログラムを書いてみます。

ちなみに、下記はうるう年の日付です。

日付の妥当性をチェック

以下のように表示

受け付けました。

日付型のデータをチェックする

checkdate()は上記のように簡単にチェックできますが、通常日付は-(ハイフン)などの記号や「年月日」などで区切られている場合が多いでしょう。

そのため、年月日を一旦バラしてカンマ区切りで当てはめる必要が出てきます。

以下のようにlist()exprode()で日付形式のデータから年月日だけを抽出し、それぞれ変数に入れたものをcheckdate()でチェックしてみましょう。

以下のように表示

2016-02-29

strptime関数

「YYYY-mm-dd」の形式になっているかなど、形式をチェックするだけならstrptime()で事足ります。

striptime()はうるう年や、4月は30日までなどの日付の有効性はチェックできません。

ただ、2月32日や13月1日など、あり得ない日付はチェックします。

日付の形式のみチェック

以下のように表示

2015-2-28

日付が-(ハイフン)繋ぎを指定したい場合、strptime()-(ハイフン)を指定します。

/(スラッシュ)など他の文字列で繋がれた日付はエラーとなります。

以下のように表示

形式が違います。

日付の扱いはややこしいイメージがありますが、日付型なのか文字列型なのかなど、型を意識するとスムーズにコーディングできますね。

PHPは型を意識しなくとも勝手に変換してくれたりと便利な言語ですが、本来プログラミング言語では型をきちんと指定しないと動いてくれないものが多いのです。

型を意識すれば、日付の処理も簡単にこなすことができるでしょう。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. 匿名 より:

    $date = ‘2015/2/28’;

    if (strptime($date, ‘%Y-%m-%d’)) {
    echo ‘形式が違います。’;
    }
    ではなく、
    $date = ‘2015/2/28’;

    if (!strptime($date, ‘%Y-%m-%d’)) {
    echo ‘形式が違います。’;
    }
    だと思います。

    1. flatFlag より:

      確かにそうですね。
      ご指摘のとおり修正しました。
      ありがとうございます。

コメントを残す

*