異なるタイムゾーンからログインしているユーザーは、自分のタイムゾーンで時刻を確認し、タイムゾーンを切り替えることができるようにする必要があります。
私の考えでは、システムに保存されている時刻はすべて GMT (UTC) 時間であり、ユーザーがログインすると、対応する表示はユーザーのタイムゾーンに基づいて行われます。
まず、PHP でタイムゾーンを設定する方法を学びましょう。 PHP の設定方法はより柔軟で多様です。php.ini で date.timezone 属性を設定したり、コードを通じて ini_set('date.timezone', '') を呼び出したり、関数 date_default_timezone_set() を使用したり、htaccess で設定したりできます。ファイル設定。
サーバーのデフォルトのタイムゾーンが必要なタイムゾーンと一致せず、グローバルタイムゾーン構成を変更する権限がない場合は、コードのみを使用できます。
PHP には、サーバーのタイムゾーン設定を気にせずに常に GMT 時刻を取得できる便利な関数 gmdate() も提供されています。私のアイデアはこの関数に基づいています。
私のプロジェクトは Codeigniter フレームワークを使用しています。フレームワークの日付ヘルパーは、アプリケーションで複数のタイムゾーンを処理するために使用できるいくつかの便利な関数を提供します。now() は常に gmt の現在時刻を返します; local_to_gmt() は gmt 時間を現地時間に変換できます。
典型的なアプリケーション シナリオを考えてみましょう:
ユーザーがログインした後、現在時刻が表示される必要があります。ここで、now() を使用して標準の gmt 時刻を取得し、gmt_to_local() 関数を使用してそれをユーザーのタイムゾーンの時刻に変換できます。
ユーザーは時間を投稿する必要があります。ユーザーは「2010-07-10 18:30:00」という時刻をデータベースに直接保存することはできません。まず、local_to_gmt() を使用して標準の gmt 時刻を変換し、データベースに保存する必要があります。システム全体で時間が一貫して維持されるようにします。
これら 2 つの関数の詳細は、実際にはタイムゾーンに基づいて対応する操作を実行することで取得されます。計算時に夏時間も考慮できますが、現地のタイムゾーンでの夏時間の開始時刻と終了時刻は自分で管理する必要があります。
codeigniter は比較的完全なタイム ゾーン リストを提供します。 timezone_menu() はタイム ゾーンのドロップダウン リストを表示できますが、このリストの時刻は PHP に付属するタイム ゾーン表示に完全に対応することはできません。これは PHP 自体の問題です。ただし、次の関数を使用すると、入力された各タイム ゾーンに対応するタイム ゾーン テキスト表示を取得できます。
れーれー
http://www.bkjia.com/PHPjc/752483.html