10.3 日期和时间的应用

10.3 日期和时间的应用

视频讲解:光盘TMlx10日期和时间的应用.exe

本节将介绍几个日期和时间的常用方法。

10.3.1 比较两个时间的大小

在实际开发中经常会对两个时间的大小进行判断,PHP中的时间是不可以直接进行比较的。所以,首先要将时间解析为时间戳的格式,然后再进行比较。在10.2.8节中介绍的strtotime()函数即可完成该操作。

【例10.9】本例先声明两个时间变量,然后使用strtotime()函数对两个变量进行解析,再求差,最后根据差值输出结果。实例代码如下:(实例位置:光盘TMsl109)

<?php $time1=date("Y-m-d H:i:s"); //获取当前时间 $time2="2008-2-3 16:30:00"; //给变量$time2设置一个时间 echo"变量$time1的时间为:".$time1."<br>"; //输出两个时间变量 echo "变量$time2的时间为:".$time2."<p>"; if(strtotime($time1)-strtotime($time2)<0){ //对两个时间进行运算 echo"$time1早于$time2"; //如果time1-time2<0,说明time1的时间在前 }else{ echo"$time2早于$time1"; //否则,说明time2的时间在前 } ?>

运行结果如图10.9所示。

图10.9 使用strtotime()函数比较两个时间的大小

10.3.2 实现倒计时功能

【例10.10】除了可以比较两个日期的大小,还可以精确地计算出两个日期的差值。这里仍然使用strtotime()函数,开发一个倒计时的小程序。实例代码如下:(实例位置:光盘TMsl1010)

<? PHP $time1=strtotime(date("Y-m-d H:i:s")); //当前的系统时间 $time2=strtotime("2016-10-1 00:00:00"); //放假的时间 $time3=strtotime("2017-1-1"); //2017年元旦 $sub1=ceil(($time2-$time1)/3600); //(60秒*60分)秒/小时 $sub2=ceil(($time3-$time1)/86400); //(60秒*60分*24小时)秒/天 echo "离放假还有<font color=red> $sub1 </font>小时!! ! " ; echo "<p>"; echo "离2017年元旦还有<font color=red>$sub2 </font>天!! ! "; ?>

说明

ceil()函数的格式为float ceil(float value),该函数为取整函数,返回不小于参数value值的最小整数。如果有小数部分,则进一位。应注意该函数的返回类型为float型,而不是整型。

运行结果如图10.10所示。

图10.10 计算两个时间的差值

10.3.3 计算页面脚本的运行时间

在浏览网站时,经常会用到搜索引擎,在搜索信息时,细心的用户会发现,在搜索结果的最下方,一般都有“搜索时间为×秒”的字样。

这里使用到了microtime()函数,该函数返回当前UNIX时间戳和微秒数。返回格式为msec sec的字符串,其中sec是当前的UNIX时间戳,msec为微秒数。

语法格式如下:

string microtime(void)

【例10.11】下面就来计算一下例10.10的运行时间。首先声明一个函数run_time(),该函数返回当前的时间,精确到微秒。在PHP代码段运行之前先运行一次该函数,同时保存到变量$start_time中,随后运行PHP代码段。当代码段运行完毕后再次调用run_time()函数,同时保存到变量$end_time中,这两个变量的差值就是该PHP代码段运行的时间。实例代码如下:(实例位置:光盘TMsl1011)

<?php /* 声明run_time函数 */ function run_time(){ list($msec, $sec)=explode("", microtime()); //使用explode()函数返回两个变量 return((float)$msec+(float)$sec); //返回两个变量的和 } $start_time=run_time(); //第一次运行run_time()函数 /* 运行PHP代码段 */ $time1=strtotime(date("Y-m-d H:i:s")); //当前的系统时间 $time2=strtotime("2016-10-1 00:00:00"); //放假的时间 $time3=strtotime("2017-1-1"); //2017年元旦 $sub1=ceil(($time2-$time1)/3600); //(60秒*60分)秒/小时 $sub2=ceil(($time3-$time1)/86400); //(60秒*60分*24小时)秒/天 echo "离放假还有<font color=red> $sub1 </font>小时!! ! " ; echo "<p>"; echo "离2017年元旦还有<font color=red>$sub2 </font>天!! ! "; $end_time=run_time(); //再次运行run_time()函数 ?> <p> <! -- 输出差值 --> 该示例的运行时间为<font color=blue> <?php echo ($end_time - $start_time); ?> </font>秒

代码说明:

explode()函数。函数格式为array explode(string separator, string string)。该函数的作用是将字符串(string)依照指定的字符串或字符(separator)切开,如果separator为空(""),那么函数将返回false;如果separator所包含的值在string中找不到,那么函数将返回string单个元素的数组。

list()函数。函数格式为void list(mixed…)。该函数的作用是将数组中的值赋给一些变量(mixed)。

运行结果如图10.11所示。

图10.11 计算页面的运行时间

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

10.3 日期和时间的应用