奇妙さ。エッジケースではありません。むしろ、私のサーバーがアメリカ/トロントの日付/時刻を保存しているとしましょう。次に、たとえば西海岸にいる場合に備えて、時間変換ロジックを実行します。これが私が得たコードです:
$timestamp = '2012-07-25 16:30:00';
$to = 'America/Toronto';
$from = 'America/Toronto';
// system timezone
$system = (new DateTimeZone($from));
// desired conversion timezone
$desired = (new DateTimeZone($to));
// timestamp DateTime object
$resource = (new DateTime($timestamp, $system));
// offset
$offset = $desired->getOffset($resource);
print($offset);
この時点で印刷されるオフセットは -14440 (4 時間) です。システムまたはデータベースのタイムゾーンがここに来るとは思いません (両方ともアメリカ/トロントに設定されています)。これについては、どんな光でもいただければ幸いです。紛らわしい:(