【问题标题】:Php Timezone +/- IssuePHP 时区 +/- 问题
【发布时间】:2013-11-26 21:21:05
【问题描述】:
 <?php 
    $ctime = time();
    print date("d-m-Y, g:i A", $ctime) . "  (+0)<br>";
    date_default_timezone_set('Etc/GMT+8');
    print date("d-m-Y, g:i A", $ctime) . "  (+8)<br>";
    date_default_timezone_set('Etc/GMT-8');
    print date("d-m-Y, g:i A", $ctime) . "  (-8)<br>";
 ?>

所以正如你在上面看到的,我在搞乱时区。代码按预期工作并输出 3 个值。

26-11-2013, 9:10 PM (+0)
26-11-2013, 1:10 PM (+8)
27-11-2013, 5:10 AM (-8)

我的问题与脚本本身无关,时区很好地呈现,除了一个问题。时区似乎有点偏离。我要指出的部分是 +8/-8 出于某种原因它被颠倒了。我住在 PST(-8) 中,当输出时区时,它们会反过来,所以当我将时区设置为 +8 时,我真的得到 -8,反之亦然。因为即使它是 +8 它也完全符合我的时间。我做错了什么还是完全没问题,我只是对什么都没有感到困惑?

【问题讨论】:

    标签: php time timezone format


    【解决方案1】:

    Etc/GMT 时区的符号相反,实际上与您的预期相反。另见wikipedia

    为了符合 POSIX 风格,那些以“Etc/GMT”开头的区域名称的符号与大多数人的预期相反。在这种风格中,格林威治标准时间以西的区域有一个正号,东部的区域有一个负号(例如,“Etc/GMT-14”是格林威治标准时间之前/东部的 14 小时。)

    另外,尽量避免这些,基于地区的时区可以考虑 DST,Etc/GMT 不这样做 AFAIK。

    我看到the manual also warns you

    警告

    请不要使用此处列出的任何时区(UTC 除外),它们仅出于向后兼容的原因而存在。

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多