比较两个时间戳的大小

比较两个时间戳的大小

(实例位置:配套资源\SL\01\006  视频位置:配套资源\SP\01\006)

实例说明

在一些程序中经常需要将两个时间进行比较,但是由于时间是由年、月、日、时、分、秒组成的,比较起来很不方便,这时可以把时间转换成时间戳来进行比较。本实     例通过date()函数、strtotime()函数和ceil()函数实现比较两个时间戳的大小,运行结果如图1.6所示。

比较两个时间戳的大小_第1张图片 
图1.6  比较两个时间戳的大小

实现过程

具体步骤如下:

(1)创建PHP脚本文件。首先对PHP语言中的时区进行设置,将时区更改为中国上海时区。然后通过strtotime()函数获取当前时间的UNIX时间戳,并与指定的时间戳进行算术运算。最后,将时间戳运算结果转换为天数,通过ceil()函数进行取整运算并输出结果。其代码如下:

 
  
  1. php 
  2.     date_default_timezone_set("Asia/ShangHai");         //将格林威治时间设置为本地时间  
  3.     $a = strtotime("now");                              //取得当前时间戳  
  4.     $b = strtotime("05 May 2011");                      //取得2011年5月5号的时间戳  
  5.     echo $a."\n";  
  6.     echo "输出日期".date("Y-m-d H:i:s",$a)."<br><br>";      //取得以$a为时间点的时间  
  7.     echo $b."\n";  
  8.     echo "输出日期".date("Y-m-d H:i:s",$b)."<br><br>";      //取得以$b为时间点的时间  
  9.     $c = ceil(($a - $b)/(3600*24));                         //计算相差天数  
  10.     echo "距2011年5月5号已过去".$c."天";  
  11. ?> 

(2)将该文件存储于\MR\01\006文件夹下,并命名为index.php。运行结果如图1.6所示。

多学两招:

有效的时间戳通常从Fri, 13 Dec 1901 20:45:54 GMT 到 Tue, 19 Jan 2038 03:14:07 GMT(对应于32位有符号整数的最小值和最大值)。不是所有的平台都支持负的时间戳,那么日记范围就被限制为不能早于UNIX纪元。这意味着在1970年1月1日之前的日期将不能用在Windows、某些Linux版本以及几个其他的操作系统中。

技术要点

本实例主要是通过strtotime()函数将时间转换为UNIX时间戳,并进行相关取整运算而实现的。其中涉及相关函数语法如下。

(1)strtotime()函数:本函数预期接受一个包含英文日期格式的字符串并尝试将其解析为UNIX时间戳。

 
  
  1. int strtotime( string time [, int now]); 

该函数有两个参数。如果参数time的格式是绝对时间,则now参数不起作用;如果参数time的格式是相对时间,其对应的时间就是参数now来提供的,当没有提供参数now时,对应的时间就为当前时间。如果解析失败,则返回false。在PHP5.1.0之前的版本中,本函数在失败时返回-1。

(2)ceil()函数:返回不小于value的下一个整数。

 
  
  1. float ceil ( float value); 

脚下留神:

在UNIX系统中,日期与时间表示为自1970年1月1日零点起到当前时刻的秒数,这种时间称为UNIX时间戳,以32位二进制表示。其中,1970年1月1日零点称为UNIX世纪元。UNIX时间戳提供了一种统一、简洁的时间表示方式,在不同的操作系统中均支持这种时间表示方式,同一时间在UNIX和Windows中均以相同的UNIX时间戳表示,所以不需要在不同的系统中进行转换。同时,UNIX时间戳是一个时间差,与时区没有关系,无论当前PHP中使用的是何种时区,其UNIX时间戳都是唯一的。

你可能感兴趣的:(thinkphp)