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

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



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值