【发布时间】:2011-12-10 16:48:08
【问题描述】:
我目前在域对象中使用@DateTimeFormat,如下所示:
@DateTimeFormat(pattern = "MM/dd/yyyy")
private Date startDate = new Date();
在 Spring MVC 控制器中,我使用 jQuery UI 日期选择器发布今天的日期:2011 年 10 月 19 日,并且我确认这是使用 firebug 作为 HTTP Post 参数发送的,如下所示:
startDate=10%2F19%2F2011
不幸的是,一旦它到达服务器上的 Spring,它将日期存储为 2011 年 10 月 18 日 - 有一个偏离一天的错误。
我的代码中没有任何内容可以远程触及日期 - 没有任何计算或与此日期有关的任何事情。
关于@DateTimeFormat 有什么我应该注意的吗?
Hibernate 中的某些东西也会负责更改日期吗?
我也在查看我的数据库中的这个应用程序。我正在存储另一个日期,称为creationDate,它是一个实际时间戳,与用户输入不同。在大多数情况下,日期是相同的,但客户希望能够设置不同的日期,这就是 startDate 的用途。
Start Date Creation Date (actual timestamp, not user input)
2011-04-17 19:00:00 2011-04-17 21:32:27
2011-04-18 19:00:00 2011-04-18 21:14:01
2011-04-20 19:00:00 2011-04-20 23:06:47
2011-04-26 19:00:00 2011-04-26 23:24:34
2011-04-28 19:00:00 2011-04-28 20:07:06
2011-05-01 19:00:00 2011-05-02 13:35:37
2011-06-21 19:00:00 2011-06-22 15:06:36
2011-07-28 19:00:00 2011-07-29 15:32:35
2011-09-03 19:00:00 2011-09-04 13:11:45
2011-10-11 19:00:00 2011-10-12 11:45:14
2011-10-11 19:00:00 2011-10-12 11:49:55
2011-10-18 19:00:00 2011-10-19 02:20:43
起初它似乎是从 5 月开始的一个错误,但后来我意识到如果超过 19:00:00 日期是正确的,如果它低于 19:00:00 则错误.
我讨厌 Java :(
当 Spring 创建给定 10/19/2011 的日期时,似乎会出现问题 - 它似乎将用户输入转换为 2011-10-18 19:00:00。
什么是最简单的解决方案?
谢谢
【问题讨论】:
标签: spring datetime spring-mvc format