首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.Date更好的日期选择-java.util.Date限制?

java.util.Date更好的日期选择-java.util.Date限制?
EN

Stack Overflow用户
提问于 2014-04-23 20:05:14
回答 1查看 659关注 0票数 0

我正在用java构建一个web服务,在基于org.apache.cxf的Jboss 7.1.1.Final下部署它。

我需要公开一个web方法,它输入的日期字段可以在过去的几个世纪内达到。目前我正在使用java.util.Date。所以,我的web方法是

代码语言:javascript
复制
public UpdatePersonResponse updatePerson(UpdatePersonRequest request) {
...
}

请求bean UpdatePersonRequest有:

代码语言:javascript
复制
...
private Date birthday;
...

在我正在测试的soap请求中,我指出:

代码语言:javascript
复制
<!--Optional:-->
<birthday>1452-04-15</birthday>

apache cxf日志显示:

代码语言:javascript
复制
16:07:36,568 INFO  [org.apache.cxf.interceptor.LoggingInInterceptor] ... Inbound Message
[...]
<birthday>1452-04-15</birthday>

(这是正确的)

添加到请求bean的set方法中的自定义日志显示:

代码语言:javascript
复制
16:07:36,843 DEBUG  com.xxx.xxx.service.request.UpdatePersonRequest ... called setBirthday with argument [06/04/52 0.00]

(这是错误的)

然后按以下方式对请求bean进行值化:

代码语言:javascript
复制
UpdatePersonRequest [... birthday=Thu Apr 06 00:00:00 CET 1452, ...]

(这是错误的)

所以我得到了1452年4月15日,而不是1452年4月15日。

我尝试了不同的日期,例如,soap:

代码语言:javascript
复制
<birthday>1452-04-30</birthday>

自定义日志:

代码语言:javascript
复制
21:11:51,607 DEBUG  [com.xxx.xxx.service.request.UpdatePersonRequest]  ... called setBirthday with argument [21/04/52 0.00]

(错)

豆子是:

代码语言:javascript
复制
UpdatePersonRequest [... birthday=Fri Apr 21 00:00:00 CET 1452 ...]

(又错了)

I获得4月21日而不是4月30日.

我尝试了几个日期,并注意到问题发生在1582年10月15日之前的日期。对于最近的日期,所有操作都很好,并且请求bean被正确地值化了。

是否有一些我没有考虑的java.util.Date限制?我是否应该使用另一个java来表示这种日期,然后呢?

非常感谢。

编辑

其结果是,我输入到soap请求中的日期是在Julian中转换的,然后我在数据库上的持久化日期将是这个转换日期。但是我想在DB上写我在请求中输入的确切日期,而不是更正的日期,换句话说,我希望调用者处理正确的日期系统,系统不会自动进行任何转换。

我怎样才能得到这个?

EN

回答 1

Stack Overflow用户

发布于 2014-04-23 20:09:22

你遇到了从朱利安到公历的转变。这是一个历史事件,而不是Java的一个特性。谷歌“公历”会告诉你更多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23254168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档