不同的服务器应该将unix时间戳转换为不同的日期吗?

时间:2009-06-25 10:10:21

标签: php unix date timestamp

在为客户端进行UI更新时,我注意到与所有文章相关的日期已经过了一天。我想我在改变期间搞砸了一些东西,但是可以肯定的是,把一个小的php测试文件扔到了一起,给了我一些奇怪的结果。测试文件只是;

<?php
$date = 1246053600;
echo 'unix: ',$date,', converted: ',date('d/m/Y', $date);
?>

如果我在本地主机上运行上面的代码,我得到:

  

unix:1246053600,已转换:   26/06/2009

但如果我在生产服务器上运行它,我会得到:

  

unix:1246053600,已转换:   27/06/2009

注意两者之间的日差异?这里发生了什么事?!当然,将unix时间戳转换为日期没有任何特定于服务器的依赖项?

3 个答案:

答案 0 :(得分:4)

您的服务器可能设置为两个不同的时区,并且他们将时间戳解释为自1970年1月1日午夜 GMT 以来的秒数。这些日期可能一整天都不会消失,但只是一天的一部分,足以让它越过午夜的边界。

答案 1 :(得分:4)

问题是您提供的$ date值假定为UTC。如果您在两台服务器上use gmdate, you will get the same result。否则,将根据服务器的时区调整显示的日期和时间。您可以使用O(大写字母)代码打印出时区,使每台服务器上的当前设置都清晰:

echo 'unix: ',$date,', converted: ',date('d/m/Y O', $date);

答案 2 :(得分:1)

之前我遇到过类似的问题。我发现我的开发机器的php.ini中的时区与生产服务器不同。

我认为值得检查一下。