2

Java EE プロジェクトでバックエンドからフロントエンドにTime 値 ( java.sql.Time ) を渡したい。何らかの歴史的な理由から、 getTime()メソッドを呼び出して Time 型を long 型にパースします。これは、 long 型を使用してフロントエンドとバックエンド間の通信を行うことを意味します。問題があります:

フロントエンドで long 型の time を取得したら、js メソッド new Date(long) を使用して long 型を Time に戻す必要がありますが、このメソッドから取得した値はクライアントのタイムゾーンとは異なるため、クライアントが異なることを意味します。異なるタイムゾーンでは、結果が異なります。これは私が望むものではありません。すべてのクライアントに同じ結果が表示され、バックエンドの結果と同じになります。

これを解決するには、次の 2 つの方法があります。

  1. フロントエンドとバックエンドの両方のタイムゾーンを UTC 時間に変更しますが、java.sql.Time はタイムゾーンに依存しません。java.sql.Time のタイムゾーンを変更したい場合は、JVM タイムゾーンを変更する必要があります。これは良い方法ではありません。タイムゾーンを変更する他の方法はありますか?

  2. バックエンドのタイムゾーンをフロントエンドに渡します。しかし、フロントエンドで UTC 以外のタイムゾーンを変更するのは困難です (いくつかの js ライブラリが必要になる場合があります)。

誰でも問題を解決するための最良の方法を教えてもらえますか?

4

2 に答える 2

1

別の方法は次のとおりです。

  1. バックエンド日付のタイムゾーンを UTC に変更します。同じためにhttp://www.joda.org/joda-time/ - Joda API を使用してください。その上で最高です。最良の例の 1 つをここに示します

  2. 日付をフロントエンドに渡します。

  3. フロント エンドで日付を UTC 形式に変換し、エンド ユーザーに表示します。

于 2013-09-12T03:35:52.490 に答える