Похоже, проблема с часовым поясом.
Похоже, что ваша дата печатается 4 часа назад.
С какого сервера вы работаете?
Можете ли вы проверить его часовой пояс?
Например, посмотрите на этот код.Будет напечатан другой день и месяц в зависимости от часового пояса.
Date date = ((new Date().getMonth() / 3) + 1 == 1) ? new Date(new Date().getYear(), 0, 1)
:((new Date().getMonth() / 3) + 1 == 2) ? new Date(new Date().getYear(), 3, 1)
:((new Date().getMonth() / 3) + 1 == 3) ? new Date(new Date().getYear(), 6, 1)
:new Date(new Date().getYear(), 9, 1);
System.out.println(date);
Выходы: Чт 01 июля 00:00:00 BST 2010
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
System.out.println(date);
Выводы Ср 30 июня 16:00:00 PDT 2010 с той же датой.
Немного взлома, но вы можете установить час позже, чтобы гарантировать, что он получит подходящий день дляПример:
new Date(new Date().getYear(), 3, 1,23,59);
Редактировать:
Правильный способ установить часовой пояс в отчете о яшме - через источник данных.
Просто вызовите метод setTimeZone()
в вашем источнике данных, прежде чем переходить к отчету, например:
mydatasource.setTimeZone(TimeZone.getTimeZone("BST"));
Проблема в том, что сервер не установил часовой пояспоэтому просто использует значение по умолчанию, вызывающее ошибку даты.