超越PHP PHP动态 | 经典文章 | CLASS | 相关下载 | 常见问题 | FORUM | WIKI | 在线手册
Site search:    
<microtimestrftime>
Last updated: Fri, 22 Jun 2007

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 mktime() 调用中的参数顺序不同。在脚本经常会混淆这些值而出错。

根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 新纪元(1970 年 1 月 1 日)到给定时间的秒数。

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

is_dst 在夏令时可以被设为 1,如果不是则设为 0,或者不知道是否为夏令时的话设为 -1(默认值)。如果不知道,PHP 会尝试自己判断。这可能会产生未预期(但不是错误)的结果。

注: is_dst 是 3.0.10 版新加的。

mktime() 可以用来做日期计算和验证,对于超出范围的输入它可以自动计算出正确的值来。例如,下面的每一行都会输出字符串“Jan-01-1998”。

例子 1. mktime() 例子

<?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));
?>
Year 可以是两位或四位数字,取值从 0-69 表示 2000-2069 以及 70-99 表示 1970-1999(在如今很常见的 time_t 是 32 位有符号整数的系统中,year 的有效范围是 1901 到 2038)。

Windows: 目前所有的 Windows 系统都不支持负的时间戳。因此合法的年份范围只包括从 1970 到 2038。

给定月份的最后一天可以表达为下个月的第 "0" 天,而不是 -1 天。下面两个例子都将产生字符串“The last day in Feb 2000 is: 29”。

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

<?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);
?>

年,月,日都等于零的日期被认为是非法的(否则会被当作 30.11.1999,这是很怪的行为)。

参见 date()time()




add a note add a note User Contributed Notes
mktime
laurie at oneuponedown dot com
19-Nov-2003 12:42
With regard to Example 1 and using mktime to correct out-of-range input.

It should be noted that mktime will implement day light saving amends. Consider the following:

<?
print(date("d/m/Y H:i:s",mktime(0,0,0,3,(27 + 1),2004)));
?>
OUTPUT "28/03/2004 02:00:00"

<?
print(date("d/m/Y H:i:s",(mktime(0,0,0,3,27,2004) + (((1 * 24) * 60) * 60))));
?>
OUTPUT "28/03/2004 00:00:00"

Dependent on your requirements this may or may be desirable

<microtimestrftime>
 Last updated: Fri, 22 Jun 2007
view source | feedback | send page | sitemap | aboutus   
Copyright ® 2002-2003 PHPE.NET. All rights reserved
Last updated:2002-11-22