PHP的日期加減運算

之前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更有寫作的動力。

留言

這個網誌中的熱門文章

用PHP寄MAIL的方法

ImageMagick應用大全(一)

php安裝openssl的方法