1

私は次のようにGMT時間データをMySQLデータベースに保存するアプリケーションを持っています:2009-12-1615:27:47。

ユーザーのタイムゾーンオフセットは、次のような別の列に保存されます。-6

上記のタイムゾーンは、CSTであるGMT-6です。GMTオフセットデータからCST(つまり、-date('T "))をエコーする方法はありますか?

注:アプリケーションのグローバルタイムゾーンは、date_default_timezone_set('GMT');を使用して設定されることも追加する必要があります。

4

1 に答える 1

2

残念ながら、GMT オフセットごとに常に 1 つのタイムゾーンがあるとは限りません。多くの GMT オフセットには複数のタイムゾーンがあります。また、GMT オフセットは DST 中に変更されます (該当する場合)。たとえば、DST の間、米国/アリゾナと米国/山岳は同じ GMT オフセットを共有します。ただし、その年の残りの期間は、同じ GMT オフセットを共有US/MountainUS/Arizonaないでください。PHP でサポートされているタイムゾーンのリストについては、マニュアルを参照するかDateTimeZone::listIdentifiers()、参照してください。

アプリケーションをゼロから開始する場合は、GMT オフセットの代わりにタイムゾーン識別子を保存することをお勧めしますが、アプリケーションは既に運用されていると思います。その場合、データを改善せずにタイムゾーンを表示する信頼できる方法はありません。

timezoneテーブルに列を追加することをお勧めします。timezoneGMT オフセットに基づいて、事前定義されたデフォルトのリストに を設定する 1 回限りのスクリプトを作成できます。たとえば、GMT オフセットが 8 の場合、 を に設定timezoneAmerica/Los_Angelesます。最後に、GMT オフセットの代わりにタイムゾーン識別子を表示/保存するようにアプリケーションを変更します。これにより、一部のユーザーに問題が発生する可能性がありますが、必要に応じてタイムゾーンを変更できます。

于 2009-12-17T19:04:25.517 に答える