• PHP
  • 常用語法介紹
  • 日期與時間
  • import_contacts mktime 的運用及日期的加減和相差計算
    4761
適用範圍

mktime可自行設定格式化的時、分、秒、月、日、年轉換為 Unix 時間戳來表示,常用來做日期的加減運算,相當方便好用。

實用性:
重要性:

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個日期相差的時間