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 根據伺服器的時間抓出"時、分、秒、月、日、年",結果是一樣的。echo mktime(date("H"),date("i"),date("s"),date("n"),date("j"),date("Y")).'<br>';
echo mktime();
?>
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 日,等於自動退一個月,而成為正確的時間,非常好用。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
?>
推薦給您的相關主題