web-dev-qa-db-ja.com

Java XMLGregorianCalendarのTimeZoneの問題

これが繰り返されないことを願っています。ここで他の検索を確認しましたが、それらはすべて、SimpleDateFormatを使用して正しいTimeZone形式で日付を「表示」することについて話しているようです。

しかし、私の問題は、「CET」で言うことができるXMLGregorianCalendarオブジェクトを取得することです。

このオブジェクトからフォーマットを見つけて、サーバーと同じタイムゾーンで現在の時刻を送信する必要があります。

例:次の形式(タイムゾーン付き)で返されるXMLGregorianCalendarオブジェクトが必要です。

2012-09-19T15:23:36.421 + 02:00

だから私はローカルタイムゾーンの時間を返すだけのように見えるこの次のスニペットを試しました:(

TimeZone utc = TimeZone.getTimeZone("CET");
GregorianCalendar gc = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
df.setTimeZone(utc);
System.out.println(" - Gregorian UTC [" + df.format(gc.getTime()) + "]")

XMLGregorianCalendar currServTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);

System.out.println("currServTime is "+currServTime);
9
user907810

GregorianCalendarに関心のあるタイムゾーンを含めるには、それを コンストラクター に渡すか、 後で設定する にします。したがって、これらの行のいずれかが機能するはずです。

GregorianCalendar gc = new GregorianCalendar(utc);
gc.setTimeZone(utc);
11
MvG