Java Web服务是日期Java的更好选择。util。日期限制?
我正在用java构建一个web服务,并将其部署在Jboss-as-7.1.1下。最终,基于组织。阿帕奇。cxf
我需要公开一个web方法,该方法接受一个日期字段的输入,该字段在过去可以到达许多世纪。 目前我正在使用java。util。日期 因此,我的web方法是
public UpdatePersonResponse updatePerson(UpdatePersonRequest request) {
...
}
请求bean UpdatePersonRequest具有:
...
private Date birthday;
...
在我正在测试的soap请求中,我将:
<!--Optional:-->
<birthday>1452-04-15</birthday>
apache cxf日志显示:
16:07:36,568 INFO [org.apache.cxf.interceptor.LoggingInInterceptor] ... Inbound Message
[...]
<birthday>1452-04-15</birthday>
(这是正确的)
我添加到请求bean的set方法中的自定义日志显示:
16:07:36,843 DEBUG com.xxx.xxx.service.request.UpdatePersonRequest ... called setBirthday with argument [06/04/52 0.00]
(这是错误的)
然后,请求bean的值化如下所示:
UpdatePersonRequest [... birthday=Thu Apr 06 00:00:00 CET 1452, ...]
(这是错误的)
所以我得到的是2006年4月1452日,而不是2015年4月1452日强>
我试过不同的日期,比如, 肥皂:
<birthday>1452-04-30</birthday>
自定义日志:
21:11:51,607 DEBUG [com.xxx.xxx.service.request.UpdatePersonRequest] ... called setBirthday with argument [21/04/52 0.00]
(错)
这个bean是:
UpdatePersonRequest [... birthday=Fri Apr 21 00:00:00 CET 1452 ...]
(又错了)
我获得的是4月21日,而不是4月30日强>
我尝试了几个日期,发现问题发生在1582年10月15日之前的日期。对于最近的日期,所有这些都可以正常工作,并且请求bean被正确地定值
有一些java。util。我没有考虑的日期限制? 我应该使用另一种java类型来表示这些日期吗
多谢各位
编辑
其效果是,我在soap请求中输入的日期转换为Julian日期,然后我在数据库中保留的日期将是这个转换后的日期。 但我想在DB上写下我在请求中输入的确切日期,而不是更正的日期,换句话说,我希望调用者使用正确的日期系统,而不是进行任何转换由系统自动执行
我怎样才能得到这个
# 1 楼答案
你正面临着从儒略到公历的转变。这是一个历史事件,不是Java的特性。谷歌搜索“公历”会告诉你更多