ユーザーのデータベースがあり、各ユーザーには独自のタイムゾーン設定があります。たとえば、ユーザー 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#
私がどこで何を間違っているのか分かりますか?