轴客户端存根日历错误日期
axis client stub Calendar wrong date
我有一个奇怪的问题。
我使用 eclipse 使用 wsdl 生成存根。
生成的存根接受一个 java 对象作为参数,我需要在其中设置日历。
我有一个格式为 "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);
如果我打印肥皂 xml 请求,我注意到日期是:
<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>
所以在我提供的日期前一小时。
我该如何解决这个奇怪的问题?
谢谢!
Calendar calendar = Calendar.getInstance();
这将使用主机的默认时区生成一个日历对象。
<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>
这个时间是 UTC(最后的 "Z" 表示 "Zulu",又名 UTC)。
您已经指出计算机正在使用巴黎时区,即 one hour ahead of UTC。换句话说,巴黎时间是 2 月 3 日午夜,UTC 时间是 2 月 2 日 23:00。
您可以初始化日历以改为使用 UTC:
TimeZone tzUTC = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(tzUTC);
我有一个奇怪的问题。
我使用 eclipse 使用 wsdl 生成存根。
生成的存根接受一个 java 对象作为参数,我需要在其中设置日历。
我有一个格式为 "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);
如果我打印肥皂 xml 请求,我注意到日期是:
<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>
所以在我提供的日期前一小时。
我该如何解决这个奇怪的问题?
谢谢!
Calendar calendar = Calendar.getInstance();
这将使用主机的默认时区生成一个日历对象。
<ArrivalDate>2015-02-02T23:00:00.244Z</ArrivalDate>
这个时间是 UTC(最后的 "Z" 表示 "Zulu",又名 UTC)。
您已经指出计算机正在使用巴黎时区,即 one hour ahead of UTC。换句话说,巴黎时间是 2 月 3 日午夜,UTC 时间是 2 月 2 日 23:00。
您可以初始化日历以改为使用 UTC:
TimeZone tzUTC = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(tzUTC);