データベースは日時フィールド タイプを使用して時刻を記録します。サーバーのタイム ゾーン、mysql タイム ゾーン、および PHP タイム ゾーンを設定するにはどうすればよいですか?
オプション 1.
すべてのサーバーは一律に UTC タイム ゾーンを使用します。PHP プログラムは UTC タイム ゾーンを使用し、データベースに書き込まれる日時型の時刻を取り出してローカル タイム ゾーンに変換します。 。
オプション 2.
すべてのサーバーのタイム ゾーンは任意に設定でき、プログラムのタイム ゾーンも任意に設定できます。ただし、タイム ストレージに関係するものはすべて、タイムスタンプの保存に int 型を使用します。
データベースを
Asia/Shanghai
PHP のこのタイムゾーンに設定してみてはいかがでしょうか?サーバーのタイムゾーンは統一する必要があります。通常、私はデータベースにタイムスタンプを記録します。検索するのが便利だからです。国境を越えた訪問の場合。タイムスタンプのフォーマット時に対応する処理を実行するだけです。
タイムスタンプのみを推奨します
ついに、なぜ時刻にタイムスタンプを付ける必要があるのかがわかりました。それはタイムゾーンの問題によるものであることがわかりました。ただし、Laravel の Carbon クラスはこの問題を解決したようです。もちろん、タイムスタンプのパフォーマンスは最も強力で、特に検索の場合は、datetime よりも int 型の方が効率的です。
厳密に言えば、地球上のどこにいても、どの時点のタイムスタンプも同じです。たとえば、タイムスタンプ 1452783600 は、パリでは午後 4 時、サンフランシスコでは午前 7 時です。これは、オンラインおよびクライアント側の分散アプリケーションで時間情報を均一に追跡するのに役立ちます。
+8 時間。さらに、タイムスタンプにはタイムゾーンの概念がありません。タイムスタンプを使用して保存するのが最適です。
厳密に言えば、地球上のどこにいても、どの時点のタイムスタンプも同じです。
1.
datetime
,php/mysql时区设置为UTC+08
2.使用int,直接存时间戳,显示的时候再使用
date
を使用してフォーマットします