0

ユーザーが希望のタイムゾーンを選択できる環境で、予定のスケジューリングに基づくアプリケーションを作成しています。

TIMESTAMPいくつかの調査を行った後、すべての日付を保存するために MYSQL を使用することにしました。を使用すると、すべての日付がUTCに変換されて保存されると思いました。TIMESTAMP次に、TIMESTAMPデータベースから日付を取得するときに、列が MYSQL のタイムゾーンに変換されます。

以下は、現在のセットアップのコード例です。

各ページで、PHP と MYSQL のタイムゾーンが設定されます(ユーザーの選択に基づきます。この例では PST です)

date_default_timezone_set('US/Pacific');
SET time_zone = '-08:00'

MYSQL に時刻を入力するときは、タイムスタンプを適切な形式に変換するだけです。

date("Y-m-d H:i:s", $unix_timestamp);

データベースからプルするときは、単純に MYSQL を使用して UNIX に変換します。

SELECT UNIX_TIMESTAMP(created_at) as created_at FROM `table` WHERE id=1

これはエレガントで、完璧に機能しているように見えました。MySQL は、TIMESTAMP. つまり、サマータイムが始まるまでです。これで、UTC 以外のタイムゾーンが選択されると、時刻が1 時間ずれます。

私は何をしているのですか?助けてください!

4

2 に答える 2

2

あなたが使用する場合;

date_default_timezone_set('US/Pacific');
SET time_zone = '-08:00'

...MySQL のサーバーのタイム ゾーンは、夏の間、太平洋時間から 1 時間ずれPDTますGMT-07:00。代わりに例を使用します。

date_default_timezone_set('US/Pacific');
SET time_zone = 'America/Los_Angeles';

...そして、MySQL のサーバー時間は DST の変更をサポートし、正しいタイム ゾーン変換を取得する必要があります。

MySQL には利用可能なすべてのタイム ゾーンが含まれているとは限らないため、タイム ゾーンAmerica/Los_Angelesがシステムにない場合は、このページがインストールに役立ちます

ユーザーごとに動的なタイム ゾーンを使用しているため、MySQL と PHP のタイム ゾーンを変換するために何らかのルックアップ テーブルが必要になる場合があるため、ユーザーごとに両方を正しく設定できます。

于 2013-03-12T05:47:31.003 に答える
0

時刻を UTC (英語では GMT) としてデータベースに保存しないのはなぜですか?

次に、 mySql でCONVERT_TZ()関数を使用するか、PHP でsetTimezoneを使用します。

これにより、人々は簡単に他の人のカレンダーを見て、現地時間に変換できます。したがって、早すぎたり遅すぎたりする理由は誰にもありません (または間違った日に!)。

于 2013-03-12T05:57:41.330 に答える