代码之家  ›  专栏  ›  技术社区  ›  Mathew

不同的服务器是否应将Unix时间戳转换为不同的日期?

  •  4
  • Mathew  · 技术社区  · 15 年前

    在为客户机进行用户界面更新时,我注意到与所有文章相关联的日期都在一天之内用完。我想我在修改过程中会搞砸一些事情,但可以肯定的是,我把一些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 回复  |  直到 15 年前
        1
  •  4
  •   Breton    15 年前

    您的服务器可能设置为两个不同的时区,它们将时间戳解释为1970年1月1日午夜以来的秒数。 格林尼治时间 . 这些日期可能不到一整天,而只是一天中的一部分,足以让它越过午夜边界。

        2
  •  4
  •   Conspicuous Compiler    15 年前

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

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

        3
  •  1
  •   ScArcher2    15 年前

    我以前也有过类似的问题。我发现开发机器php.in i中的时区与生产服务器不同。

    我想说值得一看。