代码之家  ›  专栏  ›  技术社区  ›  Adriano Varoli Piazza

php date()比服务器时间提前一小时(DST问题)

  •  4
  • Adriano Varoli Piazza  · 技术社区  · 14 年前

    我正在尝试排除故障并解决此问题: 我正在使用的服务器(Linux上的PHP5.2.9)具有正确的本地时间(美洲/布宜诺斯艾利斯):

    user@server [/home/site/public_html]$ date
    Mon Nov  1 17:11:14 ART 2010
    

    php.ini 设置为 date.timezone = "America/Buenos_Aires"

    <?php
    ini_set('display_errors', true);
    error_reporting(E_ALL|E_STRICT|E_NOTICE);
    
    //date_default_timezone_set("America/Buenos_Aires"); 
    //echo  date_default_timezone_get(), "<br>";
    echo "ini: ", ini_get('date.timezone'), "<br>";
    
    $now = date("H:i:s T I");
    $nowdate = date("Y-m-d");
    echo $nowdate." ".$now;
    ?>
    

    但没有结果,结果是

    ini: America/Buenos_Aires
    2010-11-01 18:11:14 ARST 1
    

    17:11 (总是提前一个小时)。我在这里和网上找到的所有东西都指向

    • 在php.ini中设置date.timezone(已设置)
    • 混淆服务器时间和客户端时间(我没有)。

    有什么想法吗?

    如前所述,我检查过了,正如您在代码中看到的,PHP认为它应该应用DST,而阿根廷决定今年不应用DST。除了等待修补程序,还有其他选择吗?

    编辑2:

    The timezone America/Buenos_Aires switches to standard time on 20 Mar 2011 @ 02:00.
    The new GMT offset will be: -10800 (ART) 
    
    1 回复  |  直到 14 年前
        1
  •  10
  •   Community CDub    8 年前

    曾经 a question 几天前,这表明PHP还没有听说阿根廷 got rid of DST only this year

    也许可以试试 dumping your time zones 同样的方法来查看这是否也适用于您的PHP版本。

    更新: Etc/GMT-3

    有人应该用bugs.php.net提交一个bug,似乎没有这样的bug。