在为客户端进行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时间戳转换为日期没有任何特定于服务器的依赖项?
答案 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中的时区与生产服务器不同。
我认为值得检查一下。