文档章节

PHP时间 相差8小时的8从何而来?如何得到正确的时区?如何优雅的处理时间?

letwang
 letwang
发布于 2014/09/24 12:23
字数 477
阅读 2271
收藏 2

PHP时间、时区 相差8小时的8从何而来?如何得到正确的时区?如何优雅的处理时间?

PHP时区支持列表

date_default_timezone_set('PRC');//中华人民共和国时区
$date = new DateTime();
var_dump($date->getOffset());

或者

var_dump(timezone_offset_get(new DateTimeZone( 'PRC' ), new DateTime())/3600);



上面输出值是28800秒,28800/3600 = +8

这就是我们的8的由来!

========================================

date_default_timezone_set('Europe/Paris');//欧洲巴黎时区
$date = new DateTime();
var_dump($date->getOffset());

或者

var_dump(timezone_offset_get(new DateTimeZone( 'Europe/Paris' ), new DateTime())/3600);



上面输出值是7200秒,7200/3600 = +2

这就是我们的2的由来!


看到了么?当你的PHP配置文件的时区不同,那么

$date->getOffset()
值也是不同的!是个动态相对值!不可信!


换句话说

  • 1.不要在你的类库等里面自作多情的对时间戳进行+8或者-8处理,你就能保证你的服务器时区就是某个固定时区?
  • 2.为了程序可移植性,也万万不可对时间戳进行+8或者-8处理,你就能保证你永远不换服务器,运维人员帮你热情的配置错了呢?


var_dump(date_default_timezone_get());
可单独显示当前你的时区!


实战:

date_default_timezone_set('PRC');
加载你config.php头部 就默认是中国时区了,接下来的一切,你可以忽略时区的问题了!!!

优雅的处理了PHP时区、时间的棘手问题!

注意:

echo time();

time()永远返回新纪元时间戳,是不受时区影响的哦!


小记:

显示1年后的时间戳、1月后、1个星期等时间戳:

echo strtotime('+1 week');
echo strtotime('+1 month');
echo strtotime('+1 year');
echo strtotime('-1 year');//1年前的时间戳



© 著作权归作者所有

letwang

letwang

粉丝 200
博文 58
码字总数 89933
作品 1
台北
技术主管
私信 提问
PHP之取得当前时间函数方法

PHP之取得当前时间函数方法文章提供了php的几种获取当前时间的函数,date,time等,同时告诉我如何解决时区问题。php教程取得当前时间函数文章提供了php的几种获取当前时间的函数,date,time...

xdl刘涛
2016/08/16
6
0
solr date 时区 8小时时差问题

初学solr在schema 里面配置并使用sorl的date或者tdate类型,具体类型与使用如下: <field name="tdate_field"type="tdate"indexed="true"stored="true"/><field name="date_field"type="date......

java梦想家01
2015/06/03
328
0
Java 8时间和日期API 20例

伴随lambda表达式、streams以及一系列小优化,Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将...

黄梦巍
2015/06/19
493
0
Java 中的时间日期 API

自从 14 年发布 Java 8 以后,我们古老 java.util.Date 终于不再是我们 Java 里操作日期时间的唯一的选择。 其实 Java 里的日期时间的相关 API 一直为世猿诟病,不仅在于它设计分上工不明确,...

Single_YAM
2018/04/21
0
0
oracle数值类型--DATE、TIMESTAMP和INTERVAL类型

Oracle固有数据类型DATE、TIMESTAMP和INTERVAL是紧密相关的。DATE和TIMESTAMP类型存储精度可变的固定日期/时间。INTERVAL类型可以很容易地存储一个时间量,如“8个小时”或“30天”。 许多新...

Annabelle319
2018/08/24
141
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
11
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
9
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部