mktime
(PHP 4, PHP 5, PHP 7)
mktime — 取得一个日期的 Unix 时间戳
说明
$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 ]]]]]]] ) :
int
根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。
参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。
注释
Note:
As of PHP 5.1, when called with no arguments, mktime() throws an
E_STRICT
notice: use the time() function instead.
参数
-
hour
-
小时数。 The number of the hour relative to the start of the day determined by
month
,day
andyear
. Negative values reference the hour before midnight of the day in question. Values greater than 23 reference the appropriate hour in the following day(s). -
minute
-
分钟数。 The number of the minute relative to the start of the
hour
. Negative values reference the minute in the previous hour. Values greater than 59 reference the appropriate minute in the following hour(s). -
second
-
秒数(一分钟之内)。 The number of seconds relative to the start of the
minute
. Negative values reference the second in the previous minute. Values greater than 59 reference the appropriate second in the following minute(s). -
month
-
月份数。 The number of the month relative to the end of the previous year. Values 1 to 12 reference the normal calendar months of the year in question. Values less than 1 (including negative values) reference the months in the previous year in reverse order, so 0 is December, -1 is November, etc. Values greater than 12 reference the appropriate month in the following year(s).
-
day
-
天数。 The number of the day relative to the end of the previous month. Values 1 to 28, 29, 30 or 31 (depending upon the month) reference the normal days in the relevant month. Values less than 1 (including negative values) reference the days in the previous month, so 0 is the last day of the previous month, -1 is the day before that, etc. Values greater than the number of days in the relevant month reference the appropriate day in the following month(s).
-
year
-
年份数,可以是两位或四位数字,0-69 对应于 2000-2069,70-100 对应于 1970-2000。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,
year
的合法范围是 1901 到 2038 之间,不过此限制自 PHP 5.1.0 起已被克服了。 -
is_dst
-
本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。如果未知,PHP 会尝试自己搞明白。这可能产生不可预知(但并非不正确)的结果。如果 PHP 运行的系统中启用了 DST 或者
is_dst
设为 1,某些时间是无效的。例如 DST 自 2:00 生效,则所有处于 2:00 到 3:00 之间的时间都无效,mktime() 会返回一个未定义(通常为负)的值。某些系统(例如 Solaris 8)的 DST 在午夜生效,则 DST 生效当天的 0:30 会被计算为前一天的 23:30。Note:
自 PHP 5.1.0 起,本参数已被废弃。应该使用新的时区处理特性来替代。
Note:
PHP 7.0.0 起,此参数已经被移除。
返回值
mktime() 根据给出的参数返回 Unix 时间戳。如果参数非法,本函数返回 FALSE
(在 PHP 5.1 之前返回 -1)。
错误/异常
在每 次调用日期/时间函数时,如果时区无效则会引发 E_NOTICE
错误,如果使用系统设定值或 TZ 环境变量,则会引发 E_STRICT
或 E_WARNING
消息。参见 date_default_timezone_set()。
更新日志
版本 | 说明 |
---|---|
7.0.0 | is_dst 参数已经被移除。 |
5.3.0 | mktime() now throws E_DEPRECATED notice if the is_dst parameter is used. |
5.1.0 | is_dst 参数被废弃。出错时函数返回 FALSE 而不再是 -1。修正了本函数可以接受年月日参数全为零。 |
5.1.0 | When called with no arguments, mktime() throws E_STRICT notice. Use the time() function instead. |
5.1.0 | 现在发布 |
范例
Example #1 基本例子
<?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() 例子
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 下个月的最后一天
任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天。下面两个例子都会产生字符串 "The last day in Feb 2000 is: 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 时间戳