Java XMLGregorianCalendar中的TimeZone问题

use*_*810 9 java time timezone datetime-format

我希望这不是重复.我在这里检查了其他搜索,他们似乎都在谈论使用SimpleDateFormat以正确的TimeZone格式"显示"日期.

但是,我的问题是我获得了一个XMLGregorianCalendar对象,让我们在"CET"中说.

我必须从这个对象中找出格式,并将当前时间也发送到与服务器相同的TimeZone中.

例如:我需要一个XMLGregorianCalendar对象,以这种格式返回我(使用Timezone):

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);
Run Code Online (Sandbox Code Playgroud)

MvG*_*MvG 11

您应该将您感兴趣的时区包含在内GregorianCalendar,或者将其传递给构造函数或者之后进行设置.所以这些行中的任何一行都适合你:

GregorianCalendar gc = new GregorianCalendar(utc);
gc.setTimeZone(utc);
Run Code Online (Sandbox Code Playgroud)