(PHP 4, PHP 5, PHP 7, PHP 8)
mktime — 获取日期的 Unix 时间戳
$hour
,$minute
= null
,$second
= null
,$month
= null
,$day
= null
,$year
= null
返回与给定参数相对应的 Unix 时间戳。此时间戳是一个长整数,包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间经过的秒数。
任何省略或为 null
的可选参数都将根据本地日期和时间设置为当前值。
请注意,参数的顺序比较奇怪:month
、day
、year
,而不是更合理的顺序 year
、month
、day
。
不带参数调用 mktime() 不受支持,并将导致 ArgumentCountError。可以使用 time() 获取当前时间戳。
hour
相对于由 month
、day
和 year
确定的当天开始的小时数。负值表示当天午夜之前的小时。大于 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 |
minute 、second 、month 、day 和 year 现在可以为 null。 |
示例 #1 mktime() 基本示例
<?php
// 设置要使用的默认时区。
date_default_timezone_set('UTC');
// 输出:2000 年 7 月 1 日是星期六
echo "July 1, 2000 is on a " . 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() 可用于执行日期算术和验证,因为它会自动计算超出范围输入的正确值。例如,以下每一行都生成字符串“Jan-01-1998”。
<?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);
?>