【问题标题】:axis client stub Calendar wrong date轴客户端存根日历错误日期
【发布时间】:2015-02-03 17:24:12
【问题描述】:

我遇到了一个奇怪的问题。

使用 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>

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

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

谢谢!

【问题讨论】:

  • 你在哪个时区?
  • 没有人..我使用相同的代码
  • 不,我的意思是你在世界的哪个地方?或者更具体地说,生成此结果集以用作其默认时区的计算机是哪个时区?
  • 它正在使用欧洲/巴黎

标签: java calendar axis stub


【解决方案1】:
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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多