轴客户端存根日历错误的日期

时间:2015-02-03 17:24:12

标签: java calendar axis stub

我有一个奇怪的问题。

使用eclipse我使用wsdl生成存根。

生成的stub接受一个java对象作为参数,我需要在其中设置一个Calendar。

我的日期格式为“yyyy-MM-dd”,例如:

"2015-02-03"

要设置日历以传递给我使用的存根:

String arrival[]  = "2015-02-03".split("-");
Calendar calendar = Calendar.getInstance();
calendar.set(Integer.parseInt(arrival[0]), Integer.parseInt(arrival[1])-1, Integer.parseInt(arrival[2]),0,0,0);

调用存根:

StubBean bean = new StubBean(calendar,...);
stub.method(bean);
String xml_request  = stub._getCall().getMessageContext().getRequestMessage().getSOAPPartAsString();
System.out.println(xml_request);

如果我打印soap xml请求,我会注意到日期是:

<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>

所以在我提供的日期前一小时。

我该如何解决这个奇怪的问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

Calendar calendar = Calendar.getInstance();

这将使用主机的默认时区生成日历对象。

<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>

这个时间是UTC(&#34; Z&#34;最后意味着&#34; Zulu&#34;,又名UTC)。

您已表示计算机正在使用巴黎的时区one hour ahead of UTC。换句话说,当它在2月3日午夜时分在巴黎,它是2月2日23:00,UTC。

您可以将日历初始化为使用UTC代替:

TimeZone tzUTC = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(tzUTC);