gpt4 book ai didi

Java Web 服务 - 更好的日期选择 - java.util.Date 限制?

转载 作者:行者123 更新时间:2023-12-01 13:06:09 25 4
gpt4 key购买 nike

我正在用 java 构建一个 Web 服务,并将其部署在基于 org.apache.cxf 的 Jboss-as-7.1.1.Final 下。

我需要公开一个 Web 方法,该方法接受输入的日期字段可以达到过去的多个世纪。目前我正在使用 java.util.Date。所以,我的网络方法是

public UpdatePersonResponse updatePerson(UpdatePersonRequest request) {
...
}

请求 bean UpdatePersonRequest 有:

...
private Date birthday;
...

在我正在测试的肥皂请求中,我输入了:

<!--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, ...]

(这是错误的)

所以我得到的是 1452 April 06,而不是 1452 April 15。

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

<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.Date 限制?我应该使用另一种 java 类型来表示这些类型的日期吗?

非常感谢。

编辑

效果是我在肥皂请求中输入的日期被转换为儒略日期,然后我在数据库中保留的日期将是这个转换后的日期。但我想在数据库上写下我在请求中输入的确切日期,而不是更正后的日期,换句话说,我希望调用者处理要使用的正确日期系统,而不是自动进行任何转换系统。

我怎样才能获得这个?

最佳答案

您正在经历从儒略历到公历的转换。这是一个历史事件,而不是Java的特性。谷歌搜索“公历”会告诉你更多信息。

关于Java Web 服务 - 更好的日期选择 - java.util.Date 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com