PHP错误的日期/时间

时间:2011-12-03 00:16:44

标签: php date time system

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之间存在问题 - >操作系统。 当然,因为不正确的时间偏移总是不变的,我可以减去差异,但这不是一个合适的解决方案。

任何想法将不胜感激。

7 个答案:

答案 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时间,所以不使用时区。我认为以秒为单位减去时区小时是调整差异的正确方法。