有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你正面临着从儒略到公历的转变。这是一个历史事件,不是Java的特性。谷歌搜索“公历”会告诉你更多