PHP、MySQL、およびタイム ゾーン: 総合ガイド
タイム ゾーンは、特に PHP を使用する場合、複雑でわかりにくい主題になることがあります。そしてMySQL。この記事は、元の質問と報奨金で引き上げられた追加ポイントの両方に対処し、このトピックを包括的に理解することを目的としています。
MySQL に日時を保存する
一貫性を保つため、MySQL のすべての日時を UTC で保存することをお勧めします。これにより、夏時間 (DST) の問題が回避され、タイムスタンプが正常に処理されることが保証されます。
DATETIME と TIMESTAMP の選択
ほとんどの場合、次のように DATIME を使用する必要があります。これにより、より広い範囲の値が可能になり、より高い柔軟性が得られます。 TIMESTAMP は、自動タイムスタンプが必要で、値の範囲が制限されている状況に適しています。
MySQL DATE とタイム ゾーン
MySQL DATE 値には時間やタイムゾーンは含まれません。
NOW() を使用した値の挿入
NOW() を使用して値を挿入する場合は、MySQL 接続のタイムゾーンが次のとおりであることを確認してください。 UTCに設定します。これにより、サーバーのタイムゾーンに関係なく、挿入された日時が UTC になるようになります。
MySQL で使用されるタイム ゾーンの設定
MySQL 接続のタイムゾーンは永続的に UTC に設定される必要があります。
MySQL からの値の取得
MySQL から取得した日時は、PHP DateTime コンストラクターに安全に渡すことができます。正しく処理できるように UTC タイムゾーンを指定します。
タイムゾーン間の変換
エコー時に PHP DateTime をユーザーのローカル タイムゾーンに変換し、正しい形式で表示されるようにします。 .
夏時間 (DST)
DST は、PHP でサポートされている名前付きタイムゾーンで処理される必要があります。タイムスタンプを UTC で保存し、表示上で変換することにより、システムは DST の変更を自動的に処理します。
タイム ゾーンなしの既存データの修正
データが以前にタイム ゾーンなしで挿入されていた場合、MySQL の CONVERT_TZ 関数を使用するか、選択と更新中にサーバーネイティブのタイムゾーン変換を実行することをお勧めします。
ユーザー タイム ゾーンの選択
名前付き時刻のリストをユーザーに提示します。から選択できるゾーン。これにより、ユーザーは自分の場所を選択し、DST ルールを自動的に適用できるようになります。
タイム ゾーン セレクターに PHP DateTimeZone を使用する
DateTimeZone を使用して、利用可能な時間のリストを生成できます。ゾーン。次のコードは、さまざまなタイム ゾーンで時刻を表示する方法を示しています。
$dt = new DateTime('now', new DateTimeZone('UTC')); foreach(DateTimeZone::listIdentifiers() as $tz) { $dt->setTimeZone(new DateTimeZone($tz)); echo $tz, ': ', $dt->format('Y-m-d H:i:s'), "\n"; }
JavaScript を使用したユーザー タイム ゾーンの決定
JavaScript の Date クラスを使用すると、ユーザーの UTC オフセットを分単位で決定し、可能なタイム ゾーンのリストを絞り込むための開始点を提供できます。
結論
これらのガイドラインに従い、最新の PHP および MySQL ツールセットを活用することで、タイムゾーンを効果的に管理し、アプリケーションの一貫性を確保できます。
以上がPHP および MySQL アプリケーションでタイムゾーンを効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。