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

46 篇文章 0 订阅

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])

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

<?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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值