0

タイムスタンプ/日付を保存する必要があるWebアプリケーションを作成しています。

問題は、ホスティングサイトの1つで自分のサイトをホストしていて、ホスティングサイトが米国に基づいていることです。データが保存されている場合、米国のタイミングは保存されており、私の国のタイミングではありません。

ホスティングサーバーの時間を自分の国のタイミングに設定する必要があるか、保存する前に時間を変換する必要があると思います。いくつかのコードを試しましたが、取得できません。

誰かがJavaで時間を変換する方法を教えてもらえますか?

印刷するとき

 System.out.println(new Date());

現在の時刻ではなく、米国の時刻を取得します。私はこの時間を変換して、私の国の時間、つまりクウェートのタイミングに従って表示する必要があります。

編集1

日付をとして印刷すると、サーバー時間が取得されていることを意味するSystem.out.println(new Date());出力が表示されます。Thu Sep 06 11:07:49 EDT 2012

ここで、この時間をある国の時間に変換したいと思います。たとえば、クウェートまたは他の国、つまり同じ時刻を現在の国として表示する必要があります。

つまり、国クウェートの時間はThu Sep 06 19:07:49 AST 2012

インドの場合はThu Sep 06 21:37:49 IST 2012

編集2

より良い言い回しの質問 HopeSo

サーバーが米国にあるJSFを使用してWebアプリケーションを作成しました。データベースに保存timestampしています。時間を印刷している間、私は明らかにDB、つまり米国のデータにある時間を取得します。

データをタイミングとともに表示したいレポートを作成しています。

+++++++++++++++++++++++++++++++++++
+   Name    +      Time           +
+++++++++++++++++++++++++++++++++++
+ Name 1    +  10/09/2012 10:11   +
+ Name 2    +  10/09/2012 21:11   +
+ Name 3    +  10/09/2012 17:11   +
+++++++++++++++++++++++++++++++++++

ここで問題となるのは、これらのタイミングが米国のタイミングに従っているため、これらの米国のタイミングを現在の国の時間に変換する必要があるということです。今回はインターネットにアクセスしている場所を表示する必要があります。つまり、クウェートにいる場合は、クウェートのタイミングに従ってそれらのタイミングが必要です。ドバイでこのデータにアクセスしている場合は、ドバイのタイミングに従ってレポートを表示する必要があります。

誰かがこれらの問題をどのように取り除くことができるか助けてもらえますか?

4

3 に答える 3

0

java.util.Date常にUTCを提供する必要があります。呼び出しの内部に配置すると、への呼び出しの内部printlnへの暗黙の呼び出しがあるため、現地時間(コードが実行されている場所)に変換されます。.toString().println()

日付を元の値として保存していて、途中で呼び出されていないことを確認してください.toString()(DBがステージング用のタイムスタンプに変換するときなど)。

Jon Skeet(私が参照した回答)は、代替の日時パッケージを使用することも提案しています。これは、あなたが求めているものとは正確には異なりますが、問題を調べるための少なくともいくつかの代替方法を提供する可能性があります。

于 2012-09-07T16:12:13.243 に答える
0

日付に関連する国際化項目を見ることができます。これは、始めるのに役立つかもしれない良いリンクです。 国際化

于 2012-09-07T16:18:49.650 に答える
0

時間操作を使用している場合は、Calendar#getInstance(Timezone)静的メソッドでインスタンスを取得するCalendar Objectを使用して、タイムゾーンに対応するTimeZoneオブジェクトを提供する必要があります。

定義されたタイムゾーンでDateオブジェクトを印刷する必要がある場合は、DateFormatオブジェクトを取得し、そのタイムゾーンを好みに対応するものに設定します。

サンプルは次のとおりです。

SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "yyyy.MM.dd G 'at' HH:mm:ss z", Locale.UK);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+1:00")); //London?

String fullDateUK = dateFormat.format(new Date());

System.out.println(fullDateUK);
于 2012-09-07T16:24:03.007 に答える