Помните, что методы before
и after
выполняют сравнение <
(или >
), а не <=
(или >=
сравнение). Это то, что подразумевается под словом «строго» в документации API.
Кроме того, объекты Java Date
действительно являются моментом времени, а не тем, что люди обычно считают «датой». То есть сравнивается не только день, но и время суток.
Если вы хотите сравнить только день, не проверяя время в течение этого дня, создайте все свои даты исполнения в определенное время, например, в полночь. Например, предположим, что книга должна быть выпущена 26 октября. Срок оплаты может быть полночь, 27 октября.
boolean overdue = !now.before(dueDate);
Несколько неловкое отрицание объясняет случай, когда сейчас ровно 12:00 27 октября.