PHP 时间戳

time() Unix 纪元时间

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

					
/*
 * time() 函数返回当前时间的 Unix 时间戳,自 Unix 纪元 January 1 1970 00:00:00 GMT 起的当前时间的秒数。
 */
<?php
  $t = time();
  echo $t."<br>";       //1607437770
  echo date("Y-m-d", $t);     //2020-12-08
 ?>
					
				

date() 格式化时间

date() 函数用于格式化时间,返回一个字符串。

					
/*
 * 可选参数 timestamp 表示时间戳,默认为 time(),即当前时间戳。
 */
string date( string format [, int timestamp] )

//显示格式 2020-12-08
date("Y-m-d",time());

//显示格式 2020.12.08
date("Y.m.d",time());

//显示格式 Dec 08 2020
date("M d Y",time());

//显示格式 2020-12-08 20:01
date("Y-m-d H:i",time());

					
				
format 时间格式化方式
格式化方式说明
Y4 位数字年,y 为 2 位数字,如 99 即 1999 年。
m数字月份,前面有前导 0,如 01。n 为无前导 0 数字月份。
F月份,完整的文本格式,例如 January 或者 March。
M三个字母缩写表示的月份,例如 Jan 或者 Mar。
d月份中的第几天,前面有前导 0,如 03。j 为无前导 0 的天数。
w星期中的第几天,以数字表示,0 表示星期天。
z年份中的第几天,范围0-366。
W年份中的第几周,如第 32 周。
H24 小时格式,有前导 0,h 为 12 小时格式。
G24 小时格式,无前导 0,g 为对应 12 小时格式。
i分钟格式,有前导 0。
s秒格式,有前导 0。
A大写上下午,如 AM,a 为小写。

PHP 设置:如果输出的时间和实际时间差8个小时(假设采用的北京时区)的话,检查 php.ini 文件,做如下设置:date.timezone = PRC。

有用的时间差

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

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

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

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

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

					
<?php
  //执行代码
  sleep(5);
  //执行代码
  $running_times = time() - $_SERVER['REQUEST_TIME'];
  echo '页面运行时间:'.$running_times.'秒';       //页面运行时间:5秒
 ?>
					
				

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