mktime 函式是用來取得 Unix 的時間戳記
可以自行設定「時、分、秒、月、日、年」來讓 mktime 轉換為 Unix 時間戳記來表示。
Unix 時間戳記是從西元 1970 年 1 月 1 日 00:00:00 GMT 開始,至所設定的時間差秒數。
語法為 mktime(hour,minute,second,month,day,year),範例如下
echo date("Y-m-d", mktime(0, 0, 0, 7, 19, 2018)); //結果為 2018-7-19
echo date("Y-m-d H:i:s", mktime(14, 49, 31, 7, 19, 2018)); //結果為 2018-7-19 14:49:31
日期的加減
利用 mktime 函數來做日期的加減運算
//利用 mktime 函數來寫一個日期加減的 function
function dateAdd($date,$y,$m,$d){
$years = date("Y",strtotime($date)); //用date()函式取得目前年份格式0000
$months = date("m",strtotime($date)); //用date()函式取得目前月份格式00
$days = date("d",strtotime($date)); //用date()函式取得目前日期格式00
return date("Y-m-d",mktime(0,0,0,$months+$m,$days+$d,$years+$y));
}
echo dateAdd('2018-7-17',0,0,-7); //2018年7月17日 -7天 = 2018-7-10
echo dateAdd('2018-7-17',0,0,2); //2018年7月17日 +2天 = 2018-7-19
echo dateAdd('2018-7-17',0,6,0); //2018年7月17日 +6個月 = 2019-1-17
echo dateAdd('2018-7-17',1,6,2); //2018年7月17日 +1年6個月又2天 = 2020-1-19
日期的相差
利用 mktime 函數來做日期的相差運算
$d1=mktime(0,0,0,7,17,2018); //將日期轉成時間戳
$d2=mktime(0,0,0,7,10,2018); //將日期轉成時間戳
$Days=round(($d1-$d2)/3600/24); //時間戳相減取得秒數,將秒轉成日
echo $Days; //2018-7-17與2018-7-10相差了7天,$Days=7
info一般常我們常用在限時促銷(即需要有倒數計時的顯示)的案例
補充說明/ NOTE
PHP 5.3.0 版本之後有 date_add 語法可做日期的加減運算和 date_diff 來計算2個日期相差的時間