Java JAX-WS,日期时区被误解

Java JAX-WS,日期时区被误解,java,datetime,jax-ws,Java,Datetime,Jax Ws,“我的Web服务”的客户端正在以以下格式(ISO)发送日期属性: 对于在当地时间(CEST)13:46发送的请求。我的Web服务(Glassfish上的JAX-WS),编写为: @WebMethod public String getSource(Long id, Date asOfDate) { this.log.debug(asOfDate); // ... } 解释为2011年9月12日星期一14:46:00 CEST(这是上述log命令的输出)。为什么不解释为2

“我的Web服务”的客户端正在以以下格式(ISO)发送日期属性:

对于在当地时间(CEST)13:46发送的请求。我的Web服务(Glassfish上的JAX-WS),编写为:

@WebMethod    
public String getSource(Long id, Date asOfDate) {
    this.log.debug(asOfDate);
    // ...
}

解释为2011年9月12日星期一14:46:00 CEST(这是上述log命令的输出)。为什么不解释为2011年9月12日星期一13:46:00 CEST?

我不知道为什么它不能正确解析时间,但我会尝试将日期参数更改为日历参数。

正如U Mad所说,Java中的日期类型没有时区。如果您从web服务的XML模式开始,然后使用wsimport生成Java实现,您会注意到它将为此使用XMLCalendar(如果您愿意,可以通过JAXB自定义映射到常规日历)

这里是一个示例。JAXB XML文件如下所示:


使用命令
wsimport-p-b./jaxb.xml-d-a-keep

但这是正确的答案

2011-09-12T13:46:00+01:00
2011年9月12日12:46:00 UTC

在CEST(中欧夏令时,UTC+2小时)中要求这样做是:

这是有道理的

2011-09-12T13:46:00+01:00
2011-09-12 at 14:46:00