2016-04-15 9 views
2

私は面白い質問に直面しています。私の地域の環境では、私はPDT時です。フロントエンドからUTC Dateを保存し、Hibernateを使用してMySQLデータベースにDateを格納する直前に、Javaの日付をチェックしてから保存します。Dateは実際に私のSystemのタイムゾーンに変換されます。私は本当に興味があったのですが、フロントエンドのDateがUTCの日付でフォーマットされていたにもかかわらず、私はSystem Time ZoneをPDTからEDTに変更し、Hibernateの日付はEDT時刻になってしまいましたその日。私がそれを変更できる方法はありますか?すべての環境で、日付がUTCタイムゾーンにまだ保存されていない場合、UTCタイムとして保存されるようにしますか?Hibernateの日付をUTCの日付として保存していますか?

+0

はmysqlでのタイムゾーンに関連する何かをconfigのがありますか? – dambros

+0

@dambrosいいえ私は持っていません。私がそれをする最善の方法は何をお勧めしますか?私は潜在的にタイムゾーンを格納するために使用することができる私のデータベースに列があります。 – user1871869

+1

答え[ここ](http://stackoverflow.com/questions/930900/how-to-set-time-zone-of-mysql)をお試しください。 – dambros

答えて

0

バックエンド側:

MySQLのsetTimestamp/getTimestampコードを持っていますが、接続パラメータuseLegacyDatetimeCode=falseを設定している場合、それは場合にのみ、さらにあなたが例えばthis document

参照することができます学習のために、有効になりますあなたのデータベースはUTCを使用するように設定されているので、JavaにはいくつかのUTCタイムゾーンが存在する可能性があるので、データベースのタイムゾーンが何であるかを正確に伝えることでmysql-connectorに対して明示することができます:

String url = 
"jdbc:mysql://localhost/databasename?useLegacyDatetimeCode=false&serverTimezone=UTC+05:30"; 

クライアント側:web.xmlファイル内のコードの下に入れて

、これは、Webページ上のUTCであなたのsytemのタイムゾーンと表示時間がかかります。..

<context-param> 
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> 
    <param-value>true</param-value> 
</context-param> 

とMySQLのためのUTC Timzoneを設定しますこのリンクを参照することができますShould MySQL have its timezone set to UTC?

+0

システムタイムゾーンの代わりにタイムゾーンをUTCタイムゾーンに変更するように実際に変更する方法はありますか? – user1871869

+0

システムタイムゾーンをUTCに設定します。上記のコードをweb.xmlに入れて、常にシステムタイムゾーンをフロントエンドに表示します。 –

+0

私は実際にそれが欲しいので、バックエンドは常にフロントエンドが私にとって重要ではないUTC時間を保存します。私はまた、私のシステムのタイムゾーンを変更したくない – user1871869

0

Hibernate 5.2はthis articleで説明されているようにこのタスクを簡略化します。

基本的に、あなたは今、次の設定プロパティを使用して、すべてのTIMESTAMPTIMEの列のUTCタイムゾーンを強制することができます。

<property name="hibernate.jdbc.time_zone" value="UTC"/> 
関連する問題