在後端開發中,我們常常需要校驗前端傳入引數的合法性,如果是校驗日期引數,我們可以通過下面的方法來校驗:
/**
* 校驗日期格式是否合法
* @param string $date
* @param array $formats
* @return bool
*/function isdatevalid($date, $formats = array('y-m-d', 'y/m/d'))
//校驗日期合法性,只要滿足其中乙個格式就可以
foreach ($formats as $format)
}return false;
}
說明:
為什麼只用strtotime()函式是無法準確校驗時間呢?
因為只要格式正確的日期用strtotime()都能將其轉成時間戳,比如2018-02-31這個日期,其實邏輯上來說這個日期是不存在的,但是在strtotime()函式依然能將其成功轉成時間戳,所以我們需要將時間戳用date()轉成標準格式,然後和傳入的日期進行比對,如果不相等,說明這個傳入的日期也是不合法的。
php本身也有校驗時間的函式checkdate()
,這個函式需要三個引數,分別是月、日、年。比如上面的日期可以這樣呼叫checkdate函式檢測
if(checkdate(2, 31, 2018)) else
Java判斷日期是否合法
記錄一下專案中遇到的乙個bug,當時原有工具類中的 如下 public static boolean isdate string str catch exception e return result 當輸入字串為2018 02 31時返回true,日期預設轉換為了2018 03 03,未對時間格式...
PHP校驗身份證號碼是否合法
校驗身份證號碼是否合法 param str param bool getbasicinfo 是否提取身份證號碼中的基本資訊 出生日期 性別 return mixed public static function regexpmatchidcard str,getbasicinfo false 18 ...
判斷日期是否合法的方法
public static boolean chkdateformat string date int year integer.parseint date.substring 0,4 int month integer.parseint date.substring 4,6 1 int day i...