У меня дата хранится в виде java.sql.Timestamp в базе данных. Дата «2010-01-20T19: 10: 35.000Z» и эквивалентна 1264014635743 мс.
Каким-то образом дата форматируется по-разному на машине prod по сравнению с машиной dev.
Код для форматирования даты:
private final static String DATE_FORMAT = "yyyy-MM-dd";
public final static SimpleDateFormat APP_DATE_FORMATER = new SimpleDateFormat(DATE_FORMAT);
private static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("Etc/UTC");
APP_DATE_FORMATER.setTimeZone(UTC_TIMEZONE);
DateTimeZone.setDefault(DateTimeZone.UTC);
String output = APP_DATE_FORMATER.format(date)
Сгенерированный вывод в dev является правильным "2010-01-20". Но в прод у меня "2010-01-21", через день!
Конечно, поскольку ошибка возникает на сервере prod, я ограничен в своих возможностях отладки ...
Я дважды проверил, и оба сервера имеют одинаковое время и часовой пояс. Обе часы синхронизируются с NTP-сервером.
[ОБНОВЛЕНИЕ] База данных в prod имеет значение: «10-01-20 19: 10: 35,743000000» для поля даты