我有一个用户数据库,每个用户都有自己的时区设置。例如,用户 A 有 GMT-05:00 ,用户 B 有 GMT+1:00 等
我正在尝试使用我能找到的最简单的方式为这些用户显示正确的当前日期/时间。我得到了这段代码,虽然它看起来不错(恕我直言),但它显示了正的差异(+5 小时)而不是负的(负 5 小时)。
下面的脚本:
<?php
// below two lines -- info that I normally take from DB
$row['callstart'] = "1362067791"; // unixtimestamp
$userInfo['timezone'] = 'GMT-5';
echo date('Y-m-d H:i:s',$row['callstart'])."\n"; // original hour
$date = date('Y-m-d H:i:s',$row['callstart']);
$date = new DateTime($date,new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone($userInfo['timezone']));
$row['callstart'] = $date->format('Y-m-d H:i:s');
echo $row['callstart']; // converted to GMT-5 hour
?>
结果如下:
root@ssw238:/tmp# php /work/yy.php
2013-02-28 16:09:51 // that's the current GMT hour/date
2013-02-28 21:09:51 // should actually be 11:09:51 instead of 21:09:51
root@ssw238:/tmp#
知道我在哪里做错了吗?