私はmysqlデータベースに格納された日時フィールドを持っています。下の例では、この時間は09:00です。PHP setTimeZoneタイムゾーン変換の問題 - BST(GMT + 1)に起因する特殊性
私はこの時間を西海岸と東海岸USAのタイムゾーンでも表示しようとしています。私は私が正しくPHPのDateTime「はsetTimeZone」関数を使用しています信じて
- しかし、結果が戻ってくるには時間あるうちの両方のタイムゾーンのための
$online->getTimeByZone('America/Los_Angeles'); // Returns 02:00
$online->getTimeByZone('America/New_York'); // Returns 05:00
public function getTimeByZone($timezone = 'Europe/London') {
$date = $this->getDateField('start_time', 'Y-m-d H:i:s'); // 2017-10-30 09:00:00
$datetime = new DateTime($date, new DateTimeZone('Europe/London'));
$datetime->setTimeZone(new dateTimeZone($timezone));
return $datetime->format('H:i');
}
私はこれがあることを行っている時間差から想定しています英国に関連した夏時間の観測に関連していますが、これを考慮するには、「Europe/London」でDateTimeオブジェクトを開始するときに期待していました。
アイデア?
ここで、時間帯が必要なのはいつですか? –
@Hackitデータベースは 'Europe/London'時間に値を格納しています。私はアメリカ東海岸( 'アメリカ/ニューヨーク')とアメリカ西海岸( 'アメリカ/ロサンゼルス')時代に変換して出力しようとしています。 これは機能していますが、午前2時と午前1時には午前1時と午前4時に間違って表示されます。 – steve
実際、2017年10月30日にロンドンはDST(10月29日に終了する)](https://www.timeanddate.com/time/zone/uk/london?year=2017)にはないが、[New York](https://www.timeanddate.com/time/zone/usa/new-york?year=2017)と[Los Angeles](https://www.timeanddate.com/time/zone/usa/los -angeles?year = 2017)はDSTになります(11月の両方で)。だから、10月30日、ロンドンの午前9時はロサンゼルスで午前2時、ニューヨークで午前5時(すべてのDST規則のため)です:https://www.worldtimebuddy.com/?qm=1&lid=2643743、 5128581,5368361&h = 2643743&date = 2017-10-30&sln = 9-10 –