过去的PHP日期不匹配

时间:2016-04-09 16:02:48

标签: php date time

首先,我想将日期转换为PHP的整数。

echo strtotime('08-04-2016 10:33:45 GMT+7');

以及那个结果: 1460086425 。但是当我再次检查代码时:

$timezone = +7;
echo gmdate("H:i:s | d-m-Y ",1460086425 + 3600*($timezone+date("I")));

以及那个结果:11:33:45 | 08-04-2016

为什么与11:33:45 | 08-04-201608-04-2016 10:33:45不同,超过一小时。

2 个答案:

答案 0 :(得分:0)

我想知道您的时区设置是否正确。我最近遇到了类似的问题,这是由于夏令时没有正确应用造成的。我想如果服务器不知道它在哪里,那么就无法知道DST何时开始和结束。

要了解这是否适用于您,请在脚本中尝试echo ini_get('date.timezone'); - 您会得到什么?如果问题出在Web脚本中,请确保在Web上下文中执行此操作;如果问题出在控制台上,请确保在控制台上执行此操作。这是因为控制它的PHP设置通常是单独设置的。

如果您发现自己的设置未提供您通常为TZ指定的正确城市,请在php.ini文件中进行更改。例如,对我来说,我使用它:

date.timezone = Europe/London

答案 1 :(得分:0)

据我所知(在检查timezones时)GMT + 7的区域没有观察到夏令时。此外,date使用date.timezone中设置的时区,该时区可能对您的位置更正,但对于任何其他位置可能不正确。

最好使用DateTime并指定正确的DateTimeZone。这样,获得时区偏移(以及DST是否有效)的机会就会大大减少。