PHP date()
& time()
返回错误的时间:
date.timezone = "Europe/Riga"
date()
返回03-12-2011 08:57:12
的时间03-12-2011 01:57:12
,但系统时间为03-12-2011 06:57:12
(时区欧洲/里加 - 当时的正确时间)。
当我将时区更改为“欧洲/伦敦”时,时间更改为02-12-2011 23:57:12
(实际时间date
)
hwclock --show
/ 03-12-2011 01:57:12
返回的时间正确({{1}},系统时区设为里加)
操作系统:Debian 6.0
我已经检查过有关SO / Google上类似问题的大部分问题,但它们似乎都指定了错误的时区。
据我所知,php之间存在问题 - >操作系统。 当然,因为不正确的时间偏移总是不变的,我可以减去差异,但这不是一个合适的解决方案。
任何想法将不胜感激。
答案 0 :(得分:15)
阅读PHP手册似乎date.timezone的行为受到php.ini中设置的影响。 还有另一种方法可以在所有日期/时间函数中设置默认时区,它是date_default_timezone_set。尝试设置:
date_default_timezone_set('Europe/Riga');
而不是 date.timezone 代码。
答案 1 :(得分:5)
问题与我在其中一台服务器上看到的类似。看起来像bug in php 5.3.2-1。尝试在错误报告中运行php脚本并发布结果。
答案 2 :(得分:3)
系统的时区可能是错误的。这导致PHP date()函数给出的时间的变化,虽然php date.timezone(在php.ini中)和服务器的系统时间都是正确的。
答案 3 :(得分:1)
我的时区也有问题。这对某人来说很方便。
在我的情况下,智利苏美尔时间CLST返回错误的timzeone偏移。
更新 timezonedb 为我工作。
转到:https://pecl.php.net/package/timezonedb
对于Widnows 下载最新版本的dll,复制到“ext”目录。编辑php.ini并放在以下行:
延长= php_timezonedb.dll
对于Linux 您可以使用:
pecl install timezonedb
并在php.ini中输入:
延长= php_timezonedb.so
答案 4 :(得分:0)
此评论适用于阿塞拜疆时区
我在php 7.2或php 7.1版本上遇到“亚洲/巴库”问题。
我解决了将问题更改为“欧洲/巴库”的问题
答案 5 :(得分:-2)
您必须在php.ini中设置date.timezone并重新启动服务器 http://php.net/manual/en/timezones.php
答案 6 :(得分:-4)
PHP时间基于使用GMT和更高版本UTC的纪元时间刻度。大多数人现在将其称为unix时间。因为PHP使用unix时间,所以不使用时区。我认为以秒为单位减去时区小时是调整差异的正确方法。