У меня есть проблема с датами, применение Спринг, развернутая в Tomcat. Когда я возвращаю данные о формулярах, они хранятся правильной формы в базе данных в Windows. Когда я перемещаю применение к Linux, хранится та же дата, но в минус один день. Проблема находится в Спринг, ввиду того, что то, что прибывает в базу данных, является измененной датой. Эта дата не изменяется ни в каком шаге явно, в самом деле в Windows функционирует правильно то же применение.
Кто-то произошел с Вами или у Вас есть идея, где Вы теряетесь в этот день?
Из-за информации, которую ты даешь, это может быть несколько факторов, но причина - та же самая. Если ты используешь java.lang.Date
чтобы представлять дату без отметки времени, этот берет их 00:00 часы указанного дня. Как только вышеупомянутая дата представлена в меньшем timezone, происходит явление, которое ты комментируешь.
Решение может состоять в том, чтобы конфигурировать хорошо серверы, чтобы выравнивать конфигурацию timezone, или показав дату в клиенте конфигурировать компонент вывода, чтобы форматировать дату с timezone, например в JSF ты можешь применять formateador.
Также ты можешь считать, что использовать в bbdd типы восходит или ворует с информацией timezone.
Из-за описания проблемы и того, что я вижу в комментариях, разум - различной конфигурации в часовой зоне серверов. Конфигурируй или попроси, чтобы оба сервера были с той же часовой зоной.
В случае, который не мог бы менять себе конфигурацию часовой зоны на твоем сервере Linux (что была бы странной), ты можешь делать изменение на уровне приложения в Java, в способе, как начинается приложение. Основанный на этом ответе, только ты был бы должен добавлять параметр, выполнив JVM:
-Duser.timezone=Europe/Madrid
CambiГ© все поля в beans в String
, чтобы не использовать Date
, вернув данные о формулярах, ввиду того, что я восходил в MySQL, возможно вводить с String, conviertiendo String формата вида в формат базы данных с:
private String formatDate (String date, String initDateFormat, String endDateFormat) {
String parsedDate = null;
try {
java.util.Date initDate = new SimpleDateFormat(initDateFormat).parse(date);
SimpleDateFormat formatter = new SimpleDateFormat(endDateFormat);
parsedDate = formatter.format(initDate);
} catch (ParseException e) {
e.printStackTrace();
}
return parsedDate;
}
SimpleDateFormat
по умолчанию TimeZone
, которые он получает ВЫ.
–
15.10.2016, 01:40