ホームページ  >  記事  >  バックエンド開発  >  PHP は strtotime 関数と date 関数を使用して日付が有効かどうかを判断します コード共有_PHP チュートリアル

PHP は strtotime 関数と date 関数を使用して日付が有効かどうかを判断します コード共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:18:20964ブラウズ

一見すると、日付が有効かどうかを判断する非常に単純な関数のはずですが、形式と有効性の両方をチェックする必要があるため、よく考えるとまだ少し面倒です。たとえば、2013-02-29 は形式は正しいですが、日付は無効です。2012-02-29 は形式が正しく有効です。

正規表現を使用することも 1 つの方法ですが、正規表現を理解するのは実際には非常に面倒であり、正規表現を使用することは有効性をテストするのにあまり適していません。主にstrtotime関数とdate関数を使って検証する方法を紹介します。関数に直接アクセスします:

コードをコピーします コードは次のとおりです:

/**
* 日付形式が正しいかどうかを確認します
*
* @param string $date date
* @param string $formats チェックする必要がある形式配列
* @return boolean
*/
function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d") ) {
$ unixTime = strtotime($date);
if (!$unixTime) { //strtotime 変換が間違っているので、日付形式が明らかに間違っています。
return false;
}

//いずれかの形式を満たす限り、日付の有効性を検証します
foreach ($formats as $format) {
if (date($format, $unixTime) == $date) {
return true;
}
}

return false;
}

コードのコメントで詳しく説明されているため、ここでは詳しく説明しません。注意すべき点が 1 つあります。必要な日付形式が比較的特殊な場合、たとえ正しい形式であっても strtotime 関数はそれを解析できないため、この関数は使用できませんが、このような状況は非常にまれです。

いくつかの例:

コードをコピー コードは次のとおりです:

var_dump(checkDateIsValid("2013-09-10")) //出力 true
var_dump(checkDateIsValid("2013-09-ha")); //出力 false
var_dump(checkDateIsValid("2012-02-29")); //出力 true
var_dump("2013-02-29") //出力 false

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/621665.html技術記事日付が有効かどうかを判断するのは、一見すると非常に簡単な機能ですが、よく考えてみると、形式と有効性の両方をチェックする必要があるため、少し面倒です。たとえば、2013-02-2...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。