Проблема часового пояса в Java XMLGregorianCalendar

надеюсь, это не повторение. Я проверил другие поиски здесь, и все они, похоже, говорят о "отображении" даты в правильном формате часового пояса с помощью SimpleDateFormat.

однако моя проблема в том, что я получаю объект XMLGregorianCalendar, который, скажем, в "CET".

Я должен узнать формат из этого объекта и отправить текущее время также в том же часовом поясе, что и сервер.

например: мне нужен объект 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);

1 ответов


вы должны включить часовой пояс, который вас интересует в GregorianCalendar, либо передав его конструктор или настройка после. Поэтому любая из этих строк должна работать для вас:

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