В настоящее время я использую @DateTimeFormat в доменном объекте следующим образом:
@DateTimeFormat(pattern = "MM/dd/yyyy")
private Date startDate = new Date();
В Spring MVC Controller я публикую сегодняшнюю дату: 19.10.2011 с использованием средства выбора даты jQuery UI иЯ подтверждаю, что это отправляется как параметр HTTP Post с помощью firebug следующим образом:
startDate=10%2F19%2F2011
К сожалению, как только он попадает в Spring на сервере, он сохраняет дату как 18.10.2011 - естьошибка за один день.
В моем коде нет ничего, что хотя бы отдаленно затрагивало дату - нет никаких вычислений или чего-либо еще в отношении этой даты.
Есть личто-то о @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
Сначала кажется, что это ошибка, запущенная в мае, но потом я понял, что дата верна, если она была более 19:00:00, и неактивна, если она меньше 19: 00: 00.
Я ненавижу Java: (
Проблема возникает, когда Spring создает указанную дату 10/19/2011
- кажется, что пользовательский ввод переводится в формат 2011-10-18 19:00:00
.
Какое самое простое решение?
Спасибо