Java JAX-WS,日期时区被误解
“我的Web服务”的客户端正在以以下格式(ISO)发送日期属性: 对于在当地时间(CEST)13:46发送的请求。我的Web服务(Glassfish上的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
@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