PHP学习笔记 - 进阶篇(8)

时间:2022-10-16 16:39:20

PHP学习笔记 - 进阶篇(8)

日期与时间

取得当前的Unix时间戳

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

PHP提供了内置函数 time() 来取得服务器当前时间的时间戳。那么获取当前的UNIX时间戳就很简单了。

$time = time();
echo $time;//1454209902,这个数字表示从1970年1月1日 00:00:00

到我输出这个脚本时经历了1454209902秒

取得当前的日期

php内置了date()函数,来取得当前的日期。

函数说明:date(时间戳的格式, 规定时间戳【默认是当前的日期和时间,可选】)

返回值:函数日期和时间

例子:

//date函数,第二个参数取默认值的情况
echo date("Y-m-d");//2016-01-31
//date函数,第二个参数有值的情况
echo date("Y-m-d",'1454209902');//2016-01-31,1454209902表示2016-01-31的unix时间戳

取得日期的Unix时间戳

PHP提供了内置函数strtotime实现功能:获取某个日期的时间戳,或获取某个时间的时间戳。例如:

echo strtotime('2016-01-31');//1454169600,这个数字表示从1970年1月1日 00:00:00 到2016年01月31号经历了1454169600秒
echo strtotime('2016-01-31 00:00:01');//1454169600,这个数字表示从1970年1月1日 00:00:00 到2016-01-31 00:00:01时经历了1454169600秒

大家发现上面的规律了吗,其实strtotime('2016-01-31')相当于strtotime('2016-01-31 00:00:00')

将格式化的日期字符串转换为Unix时间戳

strtotime函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳。

函数说明:strtotime(要解析的时间字符串, 计算返回值的时间戳【默认是当前的时间,可选】)

返回值:成功则返回时间戳,否则返回 FALSE

比如

echo strtotime("now");//相当于将英文单词now直接等于现在的日期和时间,并把这个日期时间转化为unix时间戳。这个效果跟echo time();一样。
echo strtotime("+1 seconds");//相当于将现在的日期和时间加上了1秒,并把这个日期时间转化为unix时间戳。这个效果跟echo time()+1;一样。
echo strtotime("+1 day");//相当于将现在的日期和时间加上了1天。
echo strtotime("+1 week");//相当于将现在的日期和时间加上了1周。
echo strtotime("+1 week 3 days 7 hours 5 seconds");//相当于将现在的日期和时间加上了1周3天7小时5秒。

格式化格林威治(GMT)标准时间

gmdate 函数能格式化一个GMT的日期和时间,返回的是格林威治标准时(GMT)。

举个例子,我们现在所在的中国时区是东八区,领先格林威治时间8个小时,有时候也叫GMT+8,那么服务器运行以下脚本返回的时间应该是这样的:

当前时间假定是2016-01-31 11:29:14

echo date('Y-m-d H:i:s', time()); //输出为:2016-01-31 11:29:14
echo gmdate('Y-m-d H:i:s', time()); //输出为:2016-01-31 03:29:14

因为格林威治时间是现在中国时区的时间减去8个小时,所以相对于现在时间要少8个小时