登録済みの基本的なサイトがあります。他のすべてのデータとともに、MySQLに登録日を保存します。私が米国またはカナダにいて、2017-03-07 (Y-d-m)
に登録した場合、MySQLでは2017-04-07
10時間の時差があるため。私のサイトで日付を表示したいのであれば、それは将来起こっていることを示しています。私は何をしなければなりませんか?
デフォルトのUTC_DATEを設定するだけではなく、もう少し深く掘り下げる必要があると思います。 UTC_DATEのデフォルトは問題の解決に役立ちますが、アプリケーションでタイムゾーンを操作するというより大きな問題には対応していません。
タイムゾーンが通常処理される方法は3つあります。
覚えておくべき重要なことは、一度アプローチを選択すると、後でそれを変更することは非常に難しいことです!賢明に選択してください:)
格納するテーブルを作成するだけです UTC_DATE ([〜#〜] default [として〜#〜]値。
CREATE MyTable
...
MyColumn DATE DEFAULT UTC_DATE
...
今後同様の問題が発生する場合は、 プログラミングにおける時間の非常に徹底的な説明 を参照してください。それは私を大いに助けました。
時間を処理する方法の1つは、
ストア:
JavaScriptライブラリまたはその他のフロントエンドを使用して現地時間を取得します。
JSフロントエンドでUTC Unixタイムスタンプに変換します。
それをUTCとしてバックエンドに渡し、UTCとしてデータベースに格納します。
および取得:
UTCとしてデータベースから取得し、
バックエンドを介してUTCとしてJavaScriptに渡し、
JS(フロントエンド)に現地時間に変換させます。
要約すると、常にバックエンドとデータベースでは時間をUTCとして扱います。フロントエンドだけがユーザーのタイムゾーンを推測できるため、フロントエンドで時間をローカルに変換します。ほとんどの場合、それはかなり適切に推測されます。タイムゾーン、DST、旅行ユーザー、VPNなどの複雑さのため、100%フェイルプルーフのソリューションは存在しないようです。