2012/12/12 12:34:56 | 1 |
2012/12/12 12:34:60 | |
2012-12-12 12:34:59 | 1 |
2012-2-29 12:34:59 | 1 |
2015-2-29 12:34:59 | |
1800-01-01 00:00:00 | 1 |
2999-01-01 00:00:00 | 1 |
2999-01-01 23:59:59 | 1 |
2000-12-31 23:59:59 | 1 |
2000-12-31 | |
23:59:59 | |
1 | |
あいうえお |
/** * 日時入力チェックのバリデーション * ※日付のみあるいは時刻は異常と見なす。 * @param $strDateTime 日時文字列 * @param $reqFlg 必須許可フラグ * @return boolean true:正常 false:異常 */ function isDatetime($strDateTime,$reqFlg){ //空値且つ、必須入力がnullであれば、trueを返す。 if(empty($strDateTime) && empty($reqFlg)){ return true; } //空値且つ、必須入力がtrueであれば、falseを返す。 if(empty($strDateTime) && !empty($reqFlg)){ return false; } //日時を 年月日時分秒に分解する。 $aryA =preg_split( '|[ /:_-]|', $strDateTime ); if(count($aryA)!=6){ return false; } foreach ($aryA as $key => $val){ //▼正数以外が混じっているば、即座にfalseを返して処理終了 if (!preg_match("/^[0-9]+$/", $val)) { return false; } } //▼グレゴリオ暦と整合正が取れてるかチェック。(閏年などはエラー) ※さくらサーバーではemptyでチェックするとバグになるので注意。×→if(empty(checkdate(12,11,2012))){・・・} if(empty(checkdate($aryA[1],$aryA[2],$aryA[0]))){ return false; } //▼時刻の整合性をチェック if($aryA[3] < 0 || $aryA[3] > 23){ return false; } if($aryA[4] < 0 || $aryA[4] > 59){ return false; } if($aryA[5] < 0 || $aryA[5] > 59){ return false; } return true; }
(c)wacgance 2015-10-05