PHP mktime

PHP mktime 函式用來取得 Unix 時間戳記(Unix timestamp),你可以自己設定要格式化的時、分、秒、月、日、年,讓 mktime 幫你轉換為 Unix timestamp 表示,Unix timestamp 所代表的意思是從西元 1970 年 1 月 1 日 00:00:00 GMT 開始,至所設定的時間差秒數,在系統有需要時間計算時相當好用,因為用秒數呈現,所以可以直接加減,要由秒數轉換回其他時間格式也很容易。

PHP mktime 函式基本語法
int mktime( int $hour , int $minute , int $second , int $month , int $day , int $year , int $is_dst );
以上參數帶入 mktime 即可返回 Unix timestamp,此處的參數順序與 Unix mktime( ) 中的參數順序並不相同,PHP mktime 函式裡面的參數可以由右至左依序省略,不可跳開省略,其中的任何參數被省略時,PHP 會自動根據當時的伺服器時間計算,如果全部參數都省略,則返回當時的 Unix 時間戳記。

PHP mktime 函式參數表
int $hour
時,可以直接給數字或用 date("H") 讓 PHP 自己讀取當時伺服器的時。
int $minute
分,可以直接給數字或用 date("i") 讓 PHP 自己讀取當時伺服器的分。
int $second
秒,可以直接給數字或用 date("s") 讓 PHP 自己讀取當時伺服器的秒。
int $month
月,可以直接給數字或用 date("n") 讓 PHP 自己讀取當時伺服器的月。
int $day
日,可以直接給數字或用 date("j") 讓 PHP 自己讀取當時伺服器的日。
int $year
年,可以直接給數字或用 date("Y") 讓 PHP 自己讀取當時伺服器的年。
int $is_dst
可省略,PHP 5.1.0 之後的版本已經將此參數捨棄。

當程式不是用來計算某個固定時間差,而是計算當時的時間差,那用 PHP date 函式就很便利。

PHP mktime 範例
<?php
echo mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y")).'<br>';
echo mktime();
?>
以上兩個範例的輸出結果都一樣,第一行是用 PHP date 函式把"時、分、秒、月、日、年"依序填入 mktime 函式中,第二行則是將所有的參數全部省略,讓 PHP 根據伺服器的時間抓出"時、分、秒、月、日、年",結果是一樣的。

PHP mktime 自動調正
<?php
echo date("M-d-Y", mktime(0, 0, 0, 13, 33, 1988)).'<br>'; // 自動調正為 Feb-02-1989
echo date("M-d-Y", mktime(0, 0, 0, 8, 1, 2013)).'<br>'; // 自動調正為 Aug-01-2013
echo date("M-d-Y", mktime(0, 0, 0, 0, 1, 2013)).'<br>'; // 自動調正為 Dec-01-2012
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 01)).'<br>'; // 自動調正 Jan-01-2001
?>
不得不佩服 PHP mktime 的自動調正功能,他可以把錯誤或超出的時間值自動調整為正確的值,例如第一個範例中,年與月都超出正常範圍,mktime 自動加總上去,將原本的 1988 年 13 月 33 日修改為 1989 年 2 月 2 日,第三個範例也很好,我們故意將月份寫成零,mktime 也會自動將原本 2013 年 0 月 1 日調降為 2012 年 12 月 1 日,等於自動退一個月,而成為正確的時間,非常好用。

推薦給您的相關主題
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012