回答:
イベントをMySQLのTIMESTAMP形式で保存します。サーバー/ユーザーのタイムゾーンに関係なく、内部的にUTCとして保存されます。このように、サーバーの特定の構成に関係なく、データは移植可能です。特定のタイムゾーンに保存すると、別のタイムゾーンに変換する作業がはるかに多くなります。
PHPのさまざまな日付/時刻関数(date()など)で使用するために、データベースから数値タイムスタンプに(UNIX_TIMESTAMP()関数を使用して)フェッチします。
次に、date_default_timezone_set()を使用して、ユーザーごとにPHPタイムゾーンを設定する必要があります。その情報は、ユーザーが構成可能な設定を使用するか、ブラウザーのヘッダーから取得できます(精度は低くなります)。その後、通常どおりにPHPの日付/時刻関数を使用でき、出力はユーザーのタイムゾーンになります。
別の方法は、相対時間を表示することです(例:「5時間2分前」)。
データベースでUTC時間を使用し、必要に応じてクライアントにそれを現地時間に変換させる
timestamp
範囲は1970-01-01 00:00:01 UTC
〜2038-01-19 03:14:07 UTC
に制限されていることに注意してください。たとえば、(少なくとも40歳以上の場合は)生年月日を保存することはできません。実際、これtimestamp
は日付と時刻のレコードを保存するのに最も適していないソリューションです。datetime
フィールドを使用して、すべてをUTCとして保存します。