.

PHP 时间日期11

文章作者:eKing
发表时间:2016年11月14日 19:24
浏览次数:261

PHP 时间戳 timestamp

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 之间的问题。

提示

time() 得到的总是当前的时间戳,所以是不固定的值

如果时间戳为负数,则为从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 秒钟。

PHP 日期转换为时间戳 strtotime 与 mktime 函数

日期转换为时间戳

PHP 提供了函数可以方便的将各种形式的日期转换为时间戳,该类函数主要是:

strtotime():将任何英文文本的日期时间描述解析为时间戳。

mktime():从日期取得时间戳。

strtotime()

strtotime() 函数用于将英文文本字符串表示的日期转换为时间戳,为 date() 的反函数,成功返回时间戳,否则返回 FALSE 。

语法:

int strtotime ( string time [, int now] )

参数 time 为被解析的字符串,是根据 GNU 日期输入格式表示的日期。

例子:

<?php

echo strtotime("2009-10-21 16:00:10"); //输出 1256112010

echo strtotime("10 September 2008"); //输出 1220976000

echo strtotime("+1 day"), "<br />"; //输出明天此时的时间戳

?>

mktime()

mktime() 函数用于从日期取得时间戳,成功返回时间戳,否则返回 FALSE 。

语法:

int mktime(时, 分, 秒, 月, 日, 年)

例子:

<?php

echo mktime(21, 50, 55, 07, 14, 2010); //输出“1279115455”

?>

参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。

mktime() 在做日期计算和验证方面很有用,它会自动计算超出范围的输入的正确值。例如下面例子输出的都是 2008-01-01:

<?php

echo date("Y-m-d", mktime(0, 0, 0, 12, 32, 2007));

echo date("Y-m-d", mktime(0, 0, 0, 13, 1, 2007));

?>

下个月的最后一天:

任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天,如下面的例子:

<?php

$lastday = mktime(0, 0, 0, 3, 0, 2008);

echo strftime("2008年最后一天是:%d", $lastday);

?>

浏览器输出:

2008年最后一天是:29

PHP 格式化显示时间 date 函数

格式化时间

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

语法:

string date( string format [, int timestamp] )

参数 format 表示时间格式化的方式,可能的方式如下:

格式化方式说明: 格式化方式 说明

Y 4位数字年,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周

H 24小时格式,有前导0,h为12小时格式

G 24小时格式,无前导0,g为对应12小时格式

i 分钟格式,有前导0

s 秒格式,有前导0

A 大写上下午,如AM,a为小写

可选参数 timestamp 表示时间戳,默认为 time() ,即当前时间戳。

我们可以通过 date() 函数提供的丰富格式化来显示需要的时间日期,如下面的例子:

date("Y-m-d",time()); //显示格式如 2008-12-01

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

date("M d Y",time()); //显示格式如 Dec 01 2008

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

提示

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

date.timezone = PRC如需做其他时区的设置请参考:http://www.php.net/manual/en/timezones.php

上一篇:PHP 数组10
下一篇:PHP 表单12