之前YOGO曾在「Mysql的日期加減運算」 這篇文章中有提到MYSQL的日期加減運算,而這一篇文章則是提供PHP日期加減運算的解法;所先先來介紹一下4個PHP內建的日期函式,如下所示: 1.date() - 將本地的時間/日期格式化 語法 : string date (string format [, int timestamp]) 說明 : 使用給予的timestamp按照格式化字串傳回一格式化字串,如果沒有給予timestamp則使用本地的時間。 或可參考YOGO「php的時間函式(date)應用 」 這篇文章。 2.mktime() 取得日期的UNIX時間戳記 語法 : int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst]) 說明 : 警告 : 此函式參數的順序和正規的Unix mktime( )中參數的順序不同,且不提供由右到左來省略參數,這是程式中常見的錯誤。 給予參數則傳回Unix時間戳記,此時間戳記是介於Unux時期(January 1 1970)與所指定的時間的總秒數,傳回的時間戳記是個長整數。 參數可以由右到左的順序中省略,任何參數以此方式省略時,將會被依照本地日期與時間設定成目前的值。 mktime( )有助於日期的計算與確認,它會自動地計算正確的值,例如 : 下列各行都將產生出字串"Jan-01-1998"。 如果時間是在dst(daylight savings time)的整個期間,is_dst可以設為1;如果不是則設為0;如果不知道是否時間是在dst(daylight savings time)範圍內,則設為 -1(預設)。 注意 : is_dst增加於 3.0.10.
3.time() 傳回目前UNIX時間戳記 語法 : int time(void); 說明 : 傳回從Unix時期(January 1 1970 00:00:00 GMT)到現在的總秒數。 4.srtotime() - 剖析任何英文的日期時間成為UNIX時間戳記 語法 : int strtotime (string time [, int now]) 說明 :給予此函式一包含英文日期格式的字串,將會試著去剖析此字串成為UNIX時間戳記 再來就是實作的部份了,這裡以「Mysql的日期加減運算」 這篇文章的需求為範例: 1.取得1天後日期的方法: 使用mktime()的方法: echo date("Y-m-d", mktime(0, 0, 0, date(“m”), date(“d”)+1, date(“Y”))); 使用time()的方法: echo date('Y-m-d', time() + (24 * 60 * 60)); 使用srtotime()的方法: echo date('Y-m-d', strtotime('+1 DAY'); 2.取得3天後日期的方法: 使用mktime()的方法: echo date("Y-m-d", mktime(0, 0, 0, date(“m”), date(“d”)+3, date(“Y”))); 使用time()的方法: echo date('Y-m-d', time() + (3 * 24 * 60 * 60)); 使用srtotime()的方法: echo date('Y-m-d', strtotime('+3 DAY'); 3.取得7天後日期的方法: 使用mktime()的方法: echo date("Y-m-d", mktime(0, 0, 0, date(“m”), date(“d”)+7, date(“Y”))); 使用time()的方法: echo date('Y-m-d', time() + (7 * 24 * 60 * 60)); 使用srtotime()的方法: echo date('Y-m-d', strtotime('+7 DAY'); 4.取得15天後日期的方法: 使用mktime()的方法: echo date("Y-m-d", mktime(0, 0, 0, date(“m”), date(“d”)+15, date(“Y”))); 使用time()的方法: echo date('Y-m-d', time() + (15 * 24 * 60 * 60)); 使用srtotime()的方法: echo date('Y-m-d', strtotime('+15 DAY'); 5.取得30天後日期的方法: 使用mktime()的方法: echo date("Y-m-d", mktime(0, 0, 0, date(“m”), date(“d”)+30, date(“Y”))); 使用time()的方法: echo date('Y-m-d', time() + (30 * 24 * 60 * 60)); 使用srtotime()的方法: echo date('Y-m-d', strtotime('+30 DAY'); 延伸閱讀: Mysql的日期加減運算 挑戰PHP5/MySQL程式設計樂活學
如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。