В виртуалке воспроизвести удалось. Проблема с часовыми поясами, похоже.
В яве все даты, на самом деле, это таймстампы. И в этом таймстампе время установлено на 00:00 в текущем поясе. Я давно замечал, что если вывести таймстамп целиком, то он показывает 20:00 предыдущего дня по гринвичу. (Для дат, полученных их поля базы данных типа "дата")
Раньше всегда при преобразовании таких таймстампов в строку даты всё было нормально, а теперь он реально перекидывает на предыдущий день.
Думаю, что же с этим делать.