ステップ

PHPで日付チェックを行う方法

PHPで日付チェックを行う

前説

どのシステムにおいても、日付チェックは必ず存在する機能でしょう。早速、PHPで日付チェックを行う方法を紹介したいと思います。

日付の形式チェック

PHPで日付チェックを行う方法は主に2つのステップに分けています。
まずは日付の形式チェックです。日付の形式チェックとは「YYYY-MM-DD」や「YYYY/MM/DD」などのフォーマットチェックことことです。
方法はいろいろがありますが、正規表現を使ってチェックしたほうが良いかと思います。

上記のサンプルですが、「YYYY/MM/DD」形式で、「1/0/0」から「9999/99/99」までの値を許します。
ここの0月0日や99月99日が実際存在しないことをすぐに気付いたと思います。これを救うために、次のステップ、日付の存在チェックが必要となります。

日付の存在チェック

日付の存在チェックはPHPの関数:「checkdate」を使って行います。

「checkdate」関数は欧米の日付表記形式なので、日本の「年月日」ではなく、「月日年」という形式なので、注意が必要です。

PHPで日付チェック(Y/m/d)

実際のプロジェクトのPHPで日付チェックを行うソースを提供します。

PHPで日付チェック(YYYY/mm/dd)

実際のプロジェクトにおいて、「2013/01/02」のような年が4桁、月、日2桁固定の場合も多いため、ここで一緒に提供します。

PHPで日付チェック(YYYY/mm)

年月のみのチェックは実際のプロジェクトにもあると思います。日の部分がないため、checkdate関数が不要で、年月のみのチェックは正規表現だけで実現できます。
下記のサンプルは19xx,20xx年のみが有効で、実際の仕様に応じて、年の部分を調整しましょう。

まとめ

実際の開発工程において、「2013/01/02」全角日付や「0999/12/31」前頭ゼロような数値を日付チェックで通ってしまった不具合がよくあると思いますので、今回は実際のプロジェクトのPHPで日付チェックを行う方法を紹介しました。ご参考までに。
また、2つのステップではなく、特に正規表現不要で、(3,4行で)一発で実現できる日付チェックを行う方法があれば、是非、コメントで教えてください。
次回はPHPで数値チェックを行う方法を紹介します。
それでは、また!