### php时区问题

>[danger] 我们所说的任何一个时间,都是在确定了一个时区的前提下,不然这个时间就是错的。比如:新闻联播 常说“北京时间 2017-3-29 18:34:38 ……”,“美国当地时间2月18日上午在德克萨斯州发生一起……”,如果不先说明时区,那么没人能确定它是中国的时间还是美国的时间,到底什么时候发生的,不知道时区,那这个时间就没有存在的意义了。

先看一个例子:

```php

$a = time();

$a_ = date('Y-m-d H:i:s', $a);

echo date_default_timezone_get() . '
';

echo $a . '
';

echo $a_ . '
';

echo strtotime($a_) . '
';

date_default_timezone_set('PRC');

$b = time();

$b_ = date('Y-m-d H:i:s', $b);

echo date_default_timezone_get() . '
';

echo $b . '
';

echo $b_ . '
';

echo strtotime($b_) . '
';

echo $b - $a;

// 输出

UTC

1490783813

2017-03-29 10:36:53

1490783813

PRC

1490783813

2017-03-29 18:36:53

1490783813

0

```

可见在php中time()与系统的时区设置无关,其他的时间函数则与时区有关,受时区影响。

所以解决国际化网站很好的做法就是所有时间都存time()时间戳就好了,具体显示时则根据不同的时区来进行自动的转换输出就可以了。

```

注意 $_SERVER['REQUEST_TIME_FLOAT'] 和 $_SERVER['REQUEST_TIME'] 与time一样,同样的不受时区影响,都是 返回 Unix 时间戳 (自 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00) 到当前时间的秒数。 )

```

* * * * *

**PHP中与时区无关的函数**

1. time(): 标准时间戳, 指返回自从Unix纪元 (格林威治时间1970-01-01 00:00:00) 到当前GMT标准时间的秒数, 与PHP系统设置的时区无关。

2. gmdate(): 某GMT标准时间的"自定义格式"时间, 跟php系统设置的时区无关.

与其说是与时区无关,不受时区影响,不如说是零时区,它本身就是零时区,不可被修改。

**mysql中的时区问题**

[数据库如何存储时间?你真的知道吗?](https://mp.weixin.qq.com/s/h5qysXyiOpXNvJT8pbTN3g)

> **DateTime 类型是没有时区信息的(时区无关)**,DateTime 类型保存的时间都是当前会话所设置的时区对应的时间。这样就会有什么问题呢?当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。不要小看这个问题,很多系统就是因为这个问题闹出了很多笑话。

**Timestamp 和时区有关**。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。

> PS:DateTime 这种现象应该正是 时区有关 才对

* * * * *

### 参考

- [PHP: 日期/时间 - Manual](http://php.net/manual/zh/book.datetime.php)

- [关于PHP函数time() date() 和 strtotime() 的时区问题](http://www.cnblogs.com/caly/p/4277760.html)

- [PHP 时区](http://www.cnblogs.com/codesay/p/3580712.html)

- [php time()时间是北京时间吗](https://zhidao.baidu.com/question/1831874057802229700.html)

- [GMT 世界时_百度百科](http://baike.baidu.com/link?url=GcuUCseYlSQQ4Qqv44PswYAQLpubzR4N-q-V_yX3PIgPhnFFyWjyHV0kfZ2ylkf7HnpVSef29K0lAgzh_xR3xjLvm6EVPaMkrdCNsPD0an_nqU1QwdJQqItjHa0ST721UGZhjQ1lYfsI1ComJmEM7a)

- [协调世界时_百度百科](http://baike.baidu.com/link?url=UMmRg5Lls3vL2ewJphJ2KySBHRS7xWojRRiZL3MKRlrnaKDzDm8PX1fyiJZ6DIzDyXFoPnXNCCapDwyODU63095qY0gH29ZdNjtDyoe55ZSJe1K4HDw1T4zh_-VNR6l2pOUI0qijPQ-D_Gvkj5v-DCcE6DJ9MCF_mAdGtwgTc7fKxVaqRBAuEHOZbrB6oHCz)

- [UTC和GMT什么关系? - 知乎](https://www.zhihu.com/question/27052407)

- [世界协调时UTC和格林威治时有什么区别?_百度作业帮](https://www.zybang.com/question/a32d996db0c90e8cfa2a6374c4963ea8.html)

[数据库如何存储时间?你真的知道吗?](https://mp.weixin.qq.com/s/h5qysXyiOpXNvJT8pbTN3g)

----

update time: 2017-7-29 13:47:56

php时区问题,php时区问题相关推荐

  1. oracle修改时区无效,Oracle 时区问题

    oracle中的tz_offset是用来返回给定时区与标准时区(UTC universal of time Coordinate 通用时间坐标)的偏移量,其参数可以是: 1.一个合法的时区名 2.一个 ...

  2. date new 转换时区_Pandas 时间序列 时区控制

    处理时区本地化导致的混淆时间本地化时不存在的时间时区序列操作 利用 pytz 与 datetuil 或标准库 datetime.timezone 对象,pandas 能以多种方式处理不同时区的时间戳. ...

  3. linux连接建立的时间,用timedatectl在Linux中检查当前时区及更改时区(创建符号链接来更改时区)...

    本文介绍如何在Linux操作系统中设置或更改时区的方法,可以使用timedatectl,包括通过创建符号链接来更改时区. 前言 时区是具有相同标准时间的地理区域,通常,时区是在操作系统的安装过程中设置 ...

  4. oracle关于时区,关于oracle时区

    关于oracle时区[@more@] 商业和数据库很多时候必须跨时区工作,从9i开始,oracle环境开始有了时区意识,通过指定数据库的时区和使用TIMESTAMP WITH TIME ZONE和TI ...

  5. ubuntu修改系统时区和jvm时区

    比喻我希望服务器是西太平洋时间 tzselect 在弹出框依次选择 Pacific Ocean > US ... cp /usr/share/zoneinfo/America/Los_Angel ...

  6. python语言arrows用法_python时区运算,时区,时间戳,夏令时讲解

    import arrow from datetime import datetime import pytz def test_demo(): """ arrow 实例 ...

  7. oracle 查询数据库时区,[原创]数据库时区与操作系统不一致时的解决方法

    这几天净遇到棘手的事情:前天遇到字符集问题,今天遇到数据库时区问题. 不过,经过努力,都解决了.现在,先把解决时区问题的经过说一遍: 我们的环境:os是aix 5.1,oracle是9.2.0.5. ...

  8. java date 设置时区,Java 日期时区

    Java日期时区 ZoneOffset表示与UTC时区偏移的固定区域. ZoneOffset不跟踪由夏令时导致的区域偏移的更改. ZoneOffset类声明三个常量:UTC MAX MIN UTC是U ...

  9. linux 查看tomcat时区,项目系统时区问题

    Spring时区转换问题 spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内是相差8小时的. 解决方法: 重新设置当前项目地所在时区.使用注解的方法 ...

  10. 华为交换机配置时区_S5700系统时区不同于UTC时区导致NTP同步失败

    1.查看配置信息:ntp-service unicast-server 10.0.0.17 ,配置正确: 2.通过display clock查看当前时间: dis clock 2015-02-03 0 ...

最新文章

  1. c语言程序设计第二版第五章课后答案甘勇,郑州工程技术学院副院长甘勇来校讲学和指导工作...
  2. dedecms 自动获取缩略图
  3. How to stop worrying & start living
  4. VTK:绘制箱形图 BoxChart用法实战
  5. java jsp公共异常页面_实际应用中JSP页面的异常处理
  6. muduo for v210
  7. 非常简洁漂亮的博客导航页带自适应
  8. iOS 8 Metal Swift教程 :开始学习
  9. matlab 切割图像像素,matlab – 使用图形切割与种子点的图像分割
  10. IOS多线程之NSThread
  11. 【辅助开发】游戏辅助开发全流程-golang
  12. linux pap认证,linux – pppd“同行拒绝认证”
  13. PAT甲级-1118 Birds in Forest (25 分)
  14. HTML中文字间距调整
  15. 计算机检测不出移动硬盘,电脑不显示移动硬盘怎么办,检测不到移动硬盘的原因...
  16. 采用HTML,CSS,JAVASCRIPT的前端网页设计的内容展示
  17. KITTI数据集下载(百度云)
  18. ndk开发(二)JNI、java互调
  19. PS学习笔记 day1
  20. 新研究挑战DNA随机突变进化理论

热门文章

  1. springboot 自定义starter类
  2. 猿如意|IntelliJ IDEA Community下载安装以及基础开发设置和快捷键设置的详细教程
  3. java中abstract什么意思中文,abstraction(abstraction什么意思中文)
  4. 将Excel文件导入到数据库中
  5. iOS小技能:iOS15适配导航条主题: 背景颜色、标题颜色
  6. 测试开发人员与开发人员_我是真正的开发人员还是优秀的Googler?
  7. 汇佳学校|李昕桐:“世界顶尖设计院校自由”?18岁,我实现了!
  8. OAuth2:使用JWT和加密签名
  9. Qt系列文章之 Model/View 框架
  10. 麋鹿微博工具箱 · 批量删除微博、设置仅自己可见、仅好友可见等