mau*_*ris 5 php timezone datetime
与许多网络应用程序一样,我正在开发的应用程序需要为我们亲爱的最终用户转换时区.但是,当我在PHP 5.3中使用Carbon/DateTime时,我发现这很奇怪:
$date_str = '2014-04-15 12:00:00'; // from database
$date = new DateTime($date_str,new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone('Etc/GMT+5'));
echo $date->format('Y-m-d H:i:s O'); // 2014-04-15 07:00:00 -0500
Run Code Online (Sandbox Code Playgroud)
我把$date时区设置为GMT + 5,但是当我格式化时$date,它变成-0500了预期的+0500.
同样,如果我将其设置为负数,即Etc/GMT-5格式显示+0500而不是预期-0500.
有人能开导吗?
我能够在PHP 5.3.3,5.3.13,5.3.28中复制这个问题.认为这是一个PHP特定版本的bug.一个错误或功能?
这是一个有趣的案例.该Etc/GMT时区有自己的标志反转.
为了符合POSIX风格,那些开头的区域名称
Etc/GMT的标志与大多数人的期望相反.在这种风格中,格林威治标准时间以西的区域有一个正号,而东方区域的名称有一个负号(例如Etc/GMT-14,格林威治标准时间前面14小时/东部.)
在PHP手册也提醒您不要使用这个时区:
警告:请不要使用此处列出的任何时区(除UTC之外),它们仅出于向后兼容的原因而存在.
不使用偏移量,而是使用特定的时区标识符.要获取有效时区列表,您可以使用print_r(DateTimeZone::listIdentifiers(DateTimeZone::ALL));.
| 归档时间: |
|
| 查看次数: |
1505 次 |
| 最近记录: |