部分不太完整的date picker 套件,用戶無法快速選擇年份,所以會喜歡手動輸入
但手動輸入又可能會出錯,所以做了個很簡單的防呆設定,所以把26個英文字也加入也可,但其實大部分再差的date picker也防止了你輸入數字以外的東西,所以我個人而言已足夠
function format_date_enter($date) {
$date = str_replace('-', '-', $date);
$date = str_replace('1', '1', $date);
$date = str_replace('2', '2', $date);
$date = str_replace('3', '3', $date);
$date = str_replace('4', '4', $date);
$date = str_replace('5', '5', $date);
$date = str_replace('6', '6', $date);
$date = str_replace('7', '7', $date);
$date = str_replace('8', '8', $date);
$date = str_replace('9', '9', $date);
$date = str_replace('0', '0', $date);
$date = str_replace(' ', '', $date);
$date = str_replace(' ', '', $date);
$date = strtotime($date);
$date = date('Y-m-d', $date);
return $date;
}
送上兩個計算出年齡的function
一種是以unixtime 來計算的
//$brithdate_uxintime = '586746945';
function get_age($brithdate_uxintime) {
$brithdate = date('d/m/Y', $brithdate_uxintime);
$tz = new DateTimeZone('Europe/Brussels');
$age = DateTime::createFromFormat('d/m/Y', $brithdate, $tz)
->diff(new DateTime('now', $tz))
->y;
return $age;
}
另一種是以“文字格式“直接計算的
//$brithdate = '1988-05-07';
function get_age($brithdate) {
$currentDate = date("Y-m-d");
$age = date_diff(date_create($brithdate), date_create($currentDate));
return $age->format("%y");
}
為什麼不用unixtime or timestamp?
因為出生日期很大可能會大於1970-1-1
而unixtime or timestamp無法保存早於這個時間值的內容
所以我選擇直接用char(10)來保存