欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP mktime()、getdate() 、checkdate()、strftime()函数

程序员文章站 2024-01-28 12:17:40
...

PHP mktime()、getdate() 、checkdate()、strftime()函数


mktime()函数

如果要将一个日期和时间转变成UNIX时间戳,可以使用mktime()函数。该函数原型如下所示:

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

除了最后一个参数is_dst外,其他参数的含义都很容易理解。参数is_dst表示该日期所示的时间是否是夏令时。如果是,可以将其设置为1,如果不是,设置为0(默认值),如果不知道,则设置为-1(默认值)。在使用-1的情况下,PHP将根据所运行的系统来确定它。该参数是可选的,很少用到。

使用该函数需要避免的一个主要陷阱是其参数顺序非常不直观。参数的顺序不允许漏掉一个时间参数。如果对具体时刻不在乎,可以将0传给hour、minute和second参数。

可以从参数列的右边开始遗漏参数的值。如果参数为空,将默认为当前时间。因此,如下所示的调用:

$timestamp=mktime();

将返回当前日期和时间的UNIX时间戳。当然,也可以通过如下所示的调用获取当前的UNIX时间戳:

$timestamp=time();

time()函数不需要任何参数,而且通常返回当前日期和时间的UNIX时间戳。

如下语句等价于上两个语句:

$timestamp=date("U");

可以将用2位或4位数字表示的年份数传递给mktime()函数。从0~69的2位数字表示的年份可以解释成2000年到2069年,而从70~99的年份解释成1970年到1999年。

如下所示的代码是说明mktime()函数使用的其他例子:

$time=mktime(12,0,0);  

该语句将给出今天日期的中午时间。

$time=mktime(0,0,0,1,1);  

该语句将给出当前年的1月1日。请注意,在小时参数中,我们使用了0(而不是24)来表示午夜。

也可以在简单日期算法中使用mktime()函数。如下所示:

$time=mktime(12,0,0,$mon,$day+30,$year);

虽然($day+30)通常都会大于一个月的日期,该语句将在指定的日期基础上增加30天。

要消除冬令时和夏令时之间的问题,可以使用12点来代替0点。如果在25小时日中增加(24*60*60)s,将停留在同一天。在中午时间增加相同的秒数,将给出11am时间,但是至少是在正确的一天。

getdate()函数

能够确定当前时间的另一个很实用的函数是getdate()函数。该函数原型如下所示:

array getdate([int timestamp])

它以时间戳作为可选参数,返回一个相关数组,表示日期和时间的各个部分。
在数组中定义了以上数据后,可以很方便地将它们转换成任何所需
的格式。如果调用没有参数的getdate()函数,它将返回当前的时间戳。

<?php
    $today=getdate();
    var_dump($today);

输出:

array
  'seconds' => int 11
  'minutes' => int 33
  'hours' => int 23
  'mday' => int 14
  'wday' => int 4
  'mon' => int 12
  'year' => int 2017
  'yday' => int 347
  'weekday' => string 'Thursday' (length=8)
  'month' => string 'December' (length=8)
  0 => int 1513265591

使用checkdate()函数检验日期有效性

可以调用checkdate()函数来检验日期是否有效。这对检查用户输入的日期来说是非常有用的。checkdate()函数的原型如下所示:

int checkdate(int month,int day,int year)

它将检查年份数是否为介于0~32 767的一个整数,月份是否介于1~12,以及日期是否存在于特定的月份。当判断一个日期是否有效时,该函数同样会考虑闰年。

例如:

checkdate(2,29,2008)

将返回true,而:

checkdate(2,29,2007)

则返回false。

格式化时间戳 strftime()函数

使用strftime()函数,你可以根据系统的locale(地域,Web服务器的本地设置)来格式化一个时间戳。这个函数具有如下所示的原型:

string strftime(string$format[,int$timestamp])

formattimestamp参数是传递给该函数的时间戳。这个参数是可选的。如果没有传递时间戳参数,本地系统的时间戳(脚本运行时的时间戳)将被返回。如下代码
所示:

<?php
echo strftime('%A<br/>');
echo strftime('%x<br/>');
echo strftime('%c<br/>');
echo strftime('%Y<br/>');
?>

以上代码用四种不同格式显示了系统的当前时间戳。这段代码将产
生类似于如下的输出:

Friday
03/16/07
03/16/07 21:17:24
2007
相关标签: 函数 php 时间