博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP时间 相差8小时的8从何而来?如何得到正确的时区?如何优雅的处理时间?...
阅读量:5867 次
发布时间:2019-06-19

本文共 1112 字,大约阅读时间需要 3 分钟。

  hot3.png

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

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年前的时间戳

转载于:https://my.oschina.net/cart/blog/317894

你可能感兴趣的文章
限制容器对内存的使用 - 每天5分钟玩转 Docker 容器技术(27)
查看>>
统计英文字母、空格、数字和其它字符的个数
查看>>
64-bit版本的Windows7完美安装USB下载驱动
查看>>
javascript(jQuery版)切换table效果自己动手丰衣足食
查看>>
Linux守护进程简介
查看>>
Linux下源码安装MySQL 5.6(经典)
查看>>
redhat6.5 配置使用centos的yum源
查看>>
说说在git上踩的那些坑
查看>>
java_Socket入门demo
查看>>
iOS pop到指定页面
查看>>
Zmap 之于Nmap 的扫描技术
查看>>
No tests found matching
查看>>
Jmeter-Thread Group(线程组)页面说明
查看>>
windows下gvim 中文乱码
查看>>
读写锁
查看>>
html5 Web SQL Databases
查看>>
python Flask离线安装与测试
查看>>
find文件查找
查看>>
自行车相关
查看>>
详解ZStack高级功能--裸金属服务部署实践
查看>>