mktime
mktime
(PHP 4, PHP 5, PHP 7)
mktime - 为日期获取Unix时间戳
描述
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
返回与给定参数对应的Unix时间戳。此时间戳是一个长整型,包含Unix Epoch(1970年1月1日00:00:00 GMT)与指定时间之间的秒数。
参数可能从右到左依次排列;根据当地的日期和时间,这样省略的任何参数将被设置为当前值。
笔记
注意
:从PHP 5.1开始,当调用不带参数时,mktime()
会引发E_STRICT
通知:使用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之间。但是,在PHP 5.1.0之前,在某些系统(例如Windows)上,这个范围从1970年到2038年是有限的。
is_dst
如果时间在夏时制时间(DST),则此参数可以设置为1;如果不是,则可以将此参数设置为1;如果不知道时间是否在夏时制时间内,则可以将此参数设置为-1(默认设置)。如果它是未知的,PHP试图找出它自己。这可能会导致意外(但不正确)的结果。如果在PHP运行的系统上启用了DST,或者is_dst
设置为1,则某些时间无效。如果在例如2:00启用了DST,则在2:00和3:00之间的所有时间都是无效的,并且mktime()
返回未定义(通常为负值)。有些系统(例如Solaris 8)在午夜启用DST,因此在启用DST的那一天的0:30时间评估为前一天的23:30。
注意
:从PHP 5.1.0开始,此参数已被弃用。因此,应该使用新的时区处理功能。
注意
:该参数已在PHP 7.0.0中删除。
返回值
mktime()
返回给定参数的Unix时间戳。如果参数无效,函数返回FALSE
(在PHP 5.1之前它返回-1
)。
错误/异常
如果使用系统设置或TZ环境变量E_NOTICE
,则每次调用日期/时间函数都会生成一个如果时区无效的信息and/orE_STRICT
或E_WARNING
message。另请参阅date_default_timezone_set()
Changelog
版 | 描述 |
---|---|
7.0.0 | is_dst参数已被删除。 |
5.3.0 | 如果使用is_dst参数,则mktime()现在会引发E_DEPRECATED通知。 |
5.1.0 | is_dst参数已被弃用。使该函数在错误时返回FALSE,而不是-1。修正了接受年,月和日全部为零的功能。 |
5.1.0 | 当没有参数调用时,mktime()会引发E_STRICT通知。改用time()函数。 |
5.1.0 | 现在发出E_STRICT和E_NOTICE时区错误。 |
示例
Example #1 mktime() basic example
<?php
// Set the default timezone to use. Available as of PHP 5.1
date_default_timezone_set('UTC'
// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)
// Prints something like: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006)
?>
Example #2 mktime() example
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)
?>
Example #3 Last day of a month
任何给定月份的最后一天可以表示为下个月的“0”日,而不是-1天。以下两个示例都会生成字符串“2000年2月的最后一天是:29”。
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000
echo strftime("Last day in Feb 2000 is: %d", $lastday
$lastday = mktime(0, 0, 0, 4, -31, 2000
echo strftime("Last day in Feb 2000 is: %d", $lastday
?>
笔记
警告
在PHP 5.1.0之前,负面时间戳在任何已知版本的Windows和其他一些系统下都不受支持。因此,有效年限范围限于1970年至2038年。
另请参阅
- checkdate() - 验证公历日期
- gmmktime() - 获取GMT日期的Unix时间戳
- date() - 格式化本地时间/日期
- time() - 返回当前的Unix时间戳
← microtime
strftime →