PHP 时间戳

UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。

PHP提供了内置函数 time() 来取得服务器当前时间的时间戳。

例子:

<?php
echo time();
?>

上面的例子运行后得到的是一串类似这样的数字:1279115455

我们可以通过 date() 等函数将它格式化为我们需要的时间日期格式。

有效的时间戳典型范围是格林威治时间 1901年12月13日 20:45:54 到 2038年1月19日 03:14:07(此范围符合 32 位有符号整数的最小值和最大值)。不过从 5.1.0 起,已经克服了年的范围只能是 1901 到 2038 之间的问题。

提示

  1. time() 得到的总是当前的时间戳,所以是不固定的值
  2. 如果时间戳为负数,则为从1970年1月1日 00:00:00往前推

时间差

时间戳虽然看起来好像不太直观,但我们在对时间做计算时却很方便。例如我们要计算时间差,或者对两个时间做比较等,直接比较数字即可而不必分别去考虑年月日时分秒的换算。而且在效率上时间戳作为整型数据也会快得多。

要求用户在登陆网站一定时间后失效而需要重新登录的例子:

<?php
$expiration = $time()+2*3600;	//得到当前时间延迟2小时候的时间戳
//失效验证代码略
?>

那么只需要用户在活动期间将当前时间戳与 $expiration 进行比较,如果大于 $expiration 则要求用户重新登录。

页面执行时间

计算当前页面执行时间的例子:

<?php
//do something
sleep(3);
//do something
$running_time = time() - $_SERVER['REQUEST_TIME'];
echo '页面运行时间:',$running_time,' 秒';
?>

执行例子输出如下:

页面运行时间:3 秒

$_SERVER['REQUEST_TIME'] 是 PHP 内置的当前页面开始运行时的时间戳,在当前页面运行结束时将 time() - $_SERVER['REQUEST_TIME'] 得到的就是当前页面运行的时间(秒):

由于该例子没有其他更多内容,因此是用 sleep(3) 函数让页面执行延迟 3 秒钟。