PHP错误的日期/时间

PHP错误的日期/时间,php,date,time,system,Php,Date,Time,System,PHPdate()&time()返回不正确的时间: 当date.timezone=“Europe/Riga”时,date()返回的时间是03-12-2011 08:57:12,但系统时间是03-12-2011 01:57:12(欧洲时区/Riga-此时的正确时间)。 当我将时区更改为“欧洲/伦敦”时,时间更改为03-12-2011 06:57:12(实际时间02-12-2011 23:57:12) date/hwclock--show返回的时间正确(03-12-2011 01:57:12,系统时

PHP
date()
&
time()
返回不正确的时间:

date.timezone=“Europe/Riga”
时,
date()
返回的时间是
03-12-2011 08:57:12
,但系统时间是
03-12-2011 01:57:12
(欧洲时区/Riga-此时的正确时间)。 当我将时区更改为“欧洲/伦敦”时,时间更改为
03-12-2011 06:57:12
(实际时间
02-12-2011 23:57:12

date
/
hwclock--show
返回的时间正确(
03-12-2011 01:57:12
,系统时区设置为Riga)

操作系统:Debian6.0

我已经检查了SO/Google上关于类似问题的大多数问题,但它们似乎都指定了错误的时区

据我所知,php->os之间存在问题。 当然,因为不正确的时间偏移总是常数,我可以减去差,但这不是一个正确的解决方案


任何想法都将不胜感激

阅读PHP手册时,的行为似乎受到PHP.ini中设置的影响。 还有另一种方法可以在all date/time函数中设置默认时区,它是默认的。尝试将其设置为:

date_default_timezone_set('Europe/Riga');

而不是您的date.timezone代码。

问题看起来与我在一台服务器上看到的类似。看起来像。尝试在bug报告中运行php脚本并发布结果。

系统的时区可能错误。尽管PHP date.timezone(在PHP.ini中)和服务器的系统时间都是正确的,但这会导致PHP date()函数给出的时间发生变化

PHP时间基于使用GMT和更高UTC的历元时间刻度。现在大多数人把它称为unix时间。因为PHP使用unix时间,所以不使用时区。我认为以秒为单位减去时区小时是调整差异的正确方法。

您必须在php.ini中设置date.timezone并重新启动服务器
我的时区也有问题。这对某人来说很方便

在我的例子中,智利苏美尔时间CLST返回了错误的timzeone偏移量

更新时区b对我来说很有效

转到:

对于Widnows下载最新版本的dll,复制到“ext”目录中。编辑php.ini并放在下面一行:

extension=php_timezonedb.dll

对于Linux您可以使用:

pecl安装时区B

在php.ini中,输入:


extension=php_timezonedb.so

阿塞拜疆时区的评论

我对PHP7.2或PHP7.1版本的“Asia/Baku”有问题


我解决了将问题更改为“Europe/Baku”

您的
date()值使用了什么?e、 g.
date('Y-m-dh:i:s')
如果使用
DateTime
类与
DateTimeZone
一起确定日期,会发生什么?例如,
$d=newdatetime(“”,newdatetimezone('Europe/Riga'));echo$d->format('Y-m-dh:i:s')谢谢。但我已经试过了,但没有成功。当我将时区从里加改为伦敦时,时差为2小时,这表明时区选择“有效”,但问题在于初始时间值。这正是OP所说的
date.timezone=“Europe/Riga”的意思
。Unix时间是一个简单的计数,因为它是一个固定的时间,完全不受时区的影响。此外,PHP具有相当不错的时区处理能力;绝对没有理由跳过它,自己写。这似乎不是一个真正的bug。报告者只是有其他代码重置默认时区。从某种意义上说,你应该注意这一点。可能产生影响的代码和.ini设置的Beaware。