2024 年 PHP 研討會日本場

mktime

(PHP 4, PHP 5, PHP 7, PHP 8)

mktime取得日期的 Unix 時間戳記

說明

mktime(
    int $hour,
    ?int $minute = null,
    ?int $second = null,
    ?int $month = null,
    ?int $day = null,
    ?int $year = null
): int|false

傳回與給定引數相對應的 Unix 時間戳記。這個時間戳記是一個長整數,包含 Unix 紀元(1970 年 1 月 1 日 00:00:00 GMT)與指定時間之間的秒數。

任何省略或設為 null 的選用引數將根據本地日期和時間設定為目前值。

警告

請注意,引數的順序很奇怪:monthdayyear,而不是更合理的順序 yearmonthday

不支援在沒有引數的情況下呼叫 mktime(),這將導致 ArgumentCountError。可以使用 time() 來取得目前的時間戳記。

參數

hour(小時)

相對於由 monthdayyear 確定的日期開始的小時數。負值表示該日期午夜前的小時。大於 23 的值表示後續日期的相應小時。

minute(分鐘)

相對於 hour 開始的分鐘數。負值表示前一小時計的分鐘數。大於 59 的值表示後續小時的相應分鐘。

second(秒)

相對於 minute 開始的秒數。負值表示前一分鐘的秒數。大於 59 的值表示後續分鐘的相應秒數。

month(月份)

相對於上一年年底的月份數。值 1 到 12 表示該年的正常日曆月份。小於 1 的值(包括負值)以相反順序表示上一年的月份,因此 0 是 12 月,-1 是 11 月,依此類推。大於 12 的值表示後續年份的相應月份。

day(日期)

相對於上一月月底的日期數。值 1 到 28、29、30 或 31(取決於月份)表示相關月份中的正常日期。小於 1 的值(包括負值)表示上一月的日期,因此 0 是上一月的最後一天,-1 是前一天,依此類推。大於相關月份天數的值表示後續月份的相應日期。

year(年份)

年份可以是兩位數或四位數的值,其中 0-69 對應到 2000-2069,而 70-100 對應到 1970-2000。在大部分現今系統中,`time_t` 是一個 32 位元的有號整數,因此 year 的有效範圍大約在 1901 到 2038 之間。

回傳值

mktime() 會傳回給定參數的 Unix 時間戳記,如果時間戳記不符合 PHP 整數的範圍,則會傳回 false

更新日誌

版本 說明
8.0.0 hour 不再是可選參數。如果您需要 Unix 時間戳記,請使用 time()
8.0.0 minutesecondmonthdayyear 現在可以為空值 (nullable)。

範例

範例 #1 mktime() 基本範例

<?php
// 設定要使用的預設時區。
date_default_timezone_set('UTC');

// 顯示:2000 年 7 月 1 日是星期六
echo "2000 年 7 月 1 日是星期" . date("l", mktime(0, 0, 0, 7, 1, 2000));

// 顯示類似:2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>

範例 #2 mktime() 範例

mktime() 對於日期計算和驗證很有用,因為它會自動計算超出範圍輸入的正確值。例如,以下每一行都會產生字串「1998 年 1 月 1 日」。

<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo
date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo
date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo
date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>

範例 #3 一個月的最後一天

任何一個月的最後一天可以表示為下個月的「0」日,而不是 -1 日。以下兩個範例都會產生字串「2000 年 2 月的最後一天是:29」。

<?php

$lastday
= mktime(0, 0, 0, 3, 0, 2000);
echo
'2000 年 2 月的最後一天是:', date('d', $lastday);

$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo
'2000 年 2 月的最後一天是:', date('d', $lastday);

?>

參見

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top