| 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