PHP 手册
后退 |  | 前进

# mktime

(PHP 3, PHP 4, PHP 5)

mktime -- 取得一个日期的 Unix 时间戳

## 说明

int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )

根据给出的参数返回 Unix 时间戳。时间戳是一个长整数，包含了从 Unix 纪元（January 1 1970 00:00:00 GMT）到给定时间的秒数。

参数可以从右向左省略，任何省略的参数会被设置成本地日期和时间的当前值。

## 参数

hour

  小时数。

minute

  分钟数。

second

  秒数（一分钟之内）。

month

  月份数。

day

  天数。

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。

  > 注: 自 PHP 5.1.0 起，本参数已被废弃。应该使用新的时区处理特性来替代。

## 返回值

mktime() 根据给出的参数返回 Unix 时间戳。如果参数非法（例如年，月，日都是零），本函数返回 `FALSE`（在 PHP 5.1 之前返回 -1）。

## 更新日志

版本 | 说明
--- | ---
3.0.10 | 加入了 is_dst 参数
5.1.0 | is_dst 参数被废弃。出错时函数返回 `FALSE` 而不再是 -1

## 范例

例子 1. 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)); ?>`

例子 2. 下个月的最后一天

任何给定月份的最后一天都可以被表示为下个月的第 "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。

## 参见

gmmktime()
date()
time()

后退 | 起点 | 前进
microtime | 上一级 | strftime