2016-11-11 15 views
1

異なる国の複数のユーザーの詳細を保存する必要があります。 DBに日付を(UTC形式で)保存するにはどうしたらいいですか?どのようにタイムゾーンに合わせてユーザーに日付を表​​示できますか? 私はJavaとmySQLを使用しています。Javaで複数のタイムゾーンを扱う

+1

Java 8を使用するソリューションはありますか? –

+0

http://stackoverflow.com/questions/12487125/java-how-do-you-convert-a-utc-timestamp-to-local-time – Anptk

+0

時刻をタイムゾーン[JodaTime](http ://stackoverflow.com/questions/19002978/in-joda-time-how-to-convert-time-zone-without-changing-time)が最善の策です。 – Thiefster

答えて

0

MySQLでは、テーブルにTIMESTAMPデータ型を使用します。

各ユーザーに対して、timezone列を格納します。VARCHAR(64)は、その列の適切なデータ型です。ユーザーがシステムに登録すると、タイムゾーンの値を尋ねます。鉱山はAmerica/New_Yorkです。あなたのものはAsia/Kolkataかもしれません。このユーザー設定のユーザーインターフェイスには、WordPress.orgソフトウェアが良い例です。

あなたが任意のユーザデータを処理する前に、SQLコマンドを発行し、ユーザの代わりに

SET SESSION time_zone='(whatever tz string the user gave you)' 

をお使いのDBMSへのJavaプログラムからの接続を確立するたびに最後に

、。

これにより、テーブルに入るすべての時間がUTCに変換され、すべての時間がローカルに変換されます。 NOW()CURDATE()で正しく動作します。ここでも、TIMESTAMPを使用し、DATETIMEまたはDATEのデータ型を使用しないでください。

サーバーのOSとデフォルトのMySQLタイムゾーンがUTCに設定されていることを確認してください。情報をデータベースにロードする前にこれを行わなければ、修正することはほとんど不可能です。ベンダーを使ってMySQLを稼動させる場合、ベンダーにはこの権利があると主張し、ベンダーに適切な権限を与えていなければ発動します。

+0

お返事ありがとうございます。私はこれらのステップを実装しようとします。 –

関連する問題