私は世界中から多くの異なるユーザーが更新を行うWebアプリケーションに取り組んでいます。タイムゾーンを処理するための最良の方法は何でしょうか?理想的には、イベントが発生すると、すべてのユーザーが現地時間を使用してそれを表示します。
サーバーのOS時間をGMT、物理的な場所の時間、または開発場所の時間に設定する必要がありますか?
アプリケーションロジック(PHP)とデータベース(MySQL)は、データをGMTまたは現地時間(ユーザーにとってローカル)として保存するように設定する必要がありますか?
業界標準、または私が見ていなかった単純で明白なソリューションさえありますか?
イベントをMySQLのTIMESTAMP形式で保存します。サーバーやユーザーのタイムゾーンに関係なく、内部的にUTCとして保存されます。このように、サーバーの特定の構成に関係なく、データは移植可能です。特定のタイムゾーンに保存すると、別のタイムゾーンに変換する作業がはるかに多くなります。
PHPのさまざまな日付/時刻関数(date()など)で使用するために、データベースから数値タイムスタンプに(UNIX_TIMESTAMP()関数を使用して)フェッチします。
次に、各ユーザーにPHPタイムゾーンを使用して date_default_timezone_set() を設定する必要があります-その情報は、ユーザーが構成可能な設定を介して、またはブラウザーのヘッダーから取得できます(あまり正確ではありません)その後、通常どおりPHP日付/時刻関数を使用できます。出力はユーザーのタイムゾーンになります。
別の方法は、相対時間を表示することです(例:「5時間2分前」)。
データベースでUTC時間を使用し、必要に応じてクライアントに現地時間に変換させる