PHP mktime 函數應用

PHP mktime 函數應用方式有兩種,第一種用法是自己設定每個參數的時間,例如年、月、日以及時間都自己填入 PHP mktime 函數,讓 mktime 函數將日期時間轉換為 UNIX 時間戳,第二種用法是完全步田參數,直接讓 mktime 自己抓取伺服器的時間並轉換為 UNIX 時間戳。

在看 PHP mktime 函數的語法之前,我們先說明一下為什麼會需要 UNIX 時間戳,根據 WIbibi 網頁上的這篇《PHP timestamp 時間戳》說明,所謂的 UNIX 時間戳是指某個時間點與 UNIX 紀元(西元1970年1月1日00:00:00)的相差秒數,當我們需要計算兩個時間差時,這個 UNIX 時間戳就非常好用,而 mktime 就是幫助我們取得這個時間戳的好工具,PHP 的 time 函數也可以做到。

接著我們就開始看 PHP mktime 函數的語法規則與實際範例。

PHP mktime 函數語法規則
int mktime( int $hour , int $minute , int $second , int $month , int $day , int $year , int $is_dst );
這個 PHP mktime 函數的語法規則有一大堆參數,這些參數所代表的意思分別如下
  • $hour - 時
  • $minute - 分
  • $second - 秒
  • $month - 月
  • $day - 日
  • $year - 年
最後一個參數 $is_dst 在 PHP 5.1.0 版開始已被捨棄,所以不用再使用,而這幾個不同的時間參數都是可以自己設定的,誠如第一段所述,全部不填寫也可以,mktime 會自己抓伺服器的時間來轉換,整個 mktime 函數最終會返回一個 UNIX 時間戳,以秒表示。

PHP mktime 函數的實際操作範例
範例的輸出結果長這樣(僅供示意,非實際時間)
1416203567
1416203567
1416203567
我們準備了三個 PHP mktime 函數的實際範例,第一個 mktime 所有參數都用 date 去讀取伺服器的時間,第二個參數則是我們手動自己將時間填入 mktime 去轉換,第三個 mktime 不用 date 讀取伺服器時間也不用我們填寫,讓 mktime 自己去讀取伺服器的時間,這三個範例都可以轉換出相同的 UNIX 時間戳。

PHP mktime 函數的自動修正功能
輸出結果
Feb-15-2015
PHP mktime 函數具有自動修正錯誤的功能,例如我們故意把錯誤的時間放入 mktime 參數中,月份寫 14,可是實際上一年只有 12 個月,換句話說,故意錯誤超過 2 個月,mktime 函數自動將"年"往後推至 2015 年的二月 15 日(Feb-15-2015),這就是 mktime 函數強大的自動時間錯誤修正功能。

更多 PHP 時間計算
分享於 2014-10-04 - 更新於 2017-07-30