Проблема с датами Ява / Linux

У меня есть проблема с датами, применение Спринг, развернутая в Tomcat. Когда я возвращаю данные о формулярах, они хранятся правильной формы в базе данных в Windows. Когда я перемещаю применение к Linux, хранится та же дата, но в минус один день. Проблема находится в Спринг, ввиду того, что то, что прибывает в базу данных, является измененной датой. Эта дата не изменяется ни в каком шаге явно, в самом деле в Windows функционирует правильно то же применение.

Кто-то произошел с Вами или у Вас есть идея, где Вы теряетесь в этот день?

1
задан 14.10.2016, 19:57
3 ответа

Из-за информации, которую ты даешь, это может быть несколько факторов, но причина - та же самая. Если ты используешь java.lang.Date чтобы представлять дату без отметки времени, этот берет их 00:00 часы указанного дня. Как только вышеупомянутая дата представлена в меньшем timezone, происходит явление, которое ты комментируешь.

Решение может состоять в том, чтобы конфигурировать хорошо серверы, чтобы выравнивать конфигурацию timezone, или показав дату в клиенте конфигурировать компонент вывода, чтобы форматировать дату с timezone, например в JSF ты можешь применять formateador.

Также ты можешь считать, что использовать в bbdd типы восходит или ворует с информацией timezone.

1
ответ дан 24.11.2019, 13:06
  • 1
    Проблема - что в моего компаньона, что est и # 225; в Уругвае он перемещает то же самое его, и Ваша часовая зона - та же самая, что та сервера. – user1748166 14.10.2016, 20:30

Из-за описания проблемы и того, что я вижу в комментариях, разум - различной конфигурации в часовой зоне серверов. Конфигурируй или попроси, чтобы оба сервера были с той же часовой зоной.

В случае, который не мог бы менять себе конфигурацию часовой зоны на твоем сервере Linux (что была бы странной), ты можешь делать изменение на уровне приложения в Java, в способе, как начинается приложение. Основанный на этом ответе, только ты был бы должен добавлять параметр, выполнив JVM:

-Duser.timezone=Europe/Madrid
1
ответ дан 24.11.2019, 13:06

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;
}
0
ответ дан 24.11.2019, 13:06
  • 1
    В действительности это решает саму проблему, которая использует SimpleDateFormat по умолчанию TimeZone, которые он получает ВЫ. –  15.10.2016, 01:40