Предостережение: я не знаю JavaMail и не понимаю точное поведение ReceivedDateTerm
. Но я знаю время и дату. Если цель - определить первый момент сегодняшнего дня, читайте дальше.
Первый момент дня
Ваша обработка даты и времени неверна.
Современный подход использует классы java.time , определенные в JSR 310.
Для получения текущей даты требуется часовой пояс. В любой момент времени дата меняется по всему земному шару в зависимости от зоны.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate today = LocalDate.now( z ) ;
Определите первый момент. Не обязательно время 00:00:00, поскольку некоторые даты в некоторых зонах начинаются в другое время, например 01:00:00.
ZonedDateTime zdt = today.atStartOfDay( z ) ;
Извлеките Instant
для настройки в UTC. Тот же самый момент, та же самая точка на временной шкале, другое время настенных часов.
Instant instant = zdt.toInstant() ;
Конструктор для ReceivedDateTerm
принимает объект java.util.Date
, еще не обновленный до современной java.time framework.
Преобразование из нашего современного Instant
в ужасный и неправильно названный класс наследия java.util.Date
.
Date d = Date.from( instant ) ;
Передайте d
в свой код JavaMail в качестве начального момента для вашего поиска.