首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mktime

(PHP 4, PHP 5, PHP 7)

mktime - 为日期获取Unix时间戳

描述

代码语言:javascript
复制
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

相对于一天开始的小时数monthday以及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_STRICTE_WARNINGmessage。另请参阅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

代码语言:javascript
复制
<?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”。

代码语言:javascript
复制
<?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”。

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com