php时间函数strtotime的深入理解

发布时间:2019-09-27编辑:脚本学堂
本文介绍下,对php中常用的时间函数strtotime的一些理解,学习下用此函数处理时间戳的方法,感兴趣的朋友参考学习下。

本节内容:
php时间函数strtotime

先来看下php官方手册中对strtotime的描述:
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

也就是说,此函数可以把2010-02-28 18:31:33转换为1267353093这种格式。
在做时间戳转换时,请注意服务器的date.timezone的配置。

在strtotime函数说明中有这么一段话:
该函数将使用 TZ 环境变量(如果有的话)来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期/时间函数。
此过程在 date_default_timezone_get()  函数页面中有说明。

可以这么理解:
如果date.timezone配置为空或者为UTC(格林威治时间),那么它就会直接把传入的时间直接转换为该时间的UNIX时间戳(相当于该时间识别为格林威治时间)
如果date.timezone配置了时区,例如Asia/Shanghai,那么这个函数就会将传入的时间认为是配置的时区的当地时间,然后根据该时区与UTC(格林威治时间)的时差来算格林威治时间的时间戳。

例如:
php.ini配置date.timezone为Asia/Shanghai;

传入:2010-02-28 18:31:33
函数转出的时间戳的实际时间为:
2010-02-28 10:31:33
因为Asia/Shanghai位于 +8区,那么函数会自动减去了8个钟头的时间来得到格林威治时间。

分享一段测试代码,供大家参考。

例子:
 

复制代码 代码示例:
<?php
echo '2010-02-28 00:00:00';
echo '<br>';
// 格林威治时间 0
date_default_timezone_set('UTC');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>'; // www.jb200.com
// 中国上海时间 + 8
date_default_timezone_set('Asia/Shanghai');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>';
// 美国洛杉矶时间 - 8
date_default_timezone_set('America/Los_Angeles');
echo gmdate('Y-m-d H:i:s', strtotime('2010-02-28 00:00:00'));
echo '<br>';

输出结果:
 

2010-02-28 00:00:00
2010-02-28 00:00:00
2010-02-27 16:00:00
2010-02-28 08:00:00

您可能感兴趣的文章:
php取得某段时间区间的时间戳的代码
php中的UNIX时间戳函数strtotime
php 时间戳函数总结与示例
php 当前时间、时间戳的获取方法汇总
php时间戳函数 strtotime 应用实例
php时间戳应用举例
php时间转换Unix时间戳的代码
php应用mktime获取时间戳的例子分析
学习php中时间戳和日期格式的转换