Используйте java .time, современный Java API даты и времени, как и другой ответ. Моя версия будет:
ZoneId zone = ZoneId.of("Asia/Tel_Aviv");
LocalDate d1 = Instant.ofEpochMilli(1_582_783_200_000L).atZone(zone).toLocalDate();
LocalDate d2 = Instant.ofEpochMilli(1_582_727_735_000L).atZone(zone).toLocalDate();
if (d2.plusDays(1).equals(d1)) {
System.out.println("" + d1 + " is the day after " + d2);
} else {
System.out.println("" + d1 + " is *not* the day after " + d2);
}
Вывод:
2020-02-27 - это день после 2020-02-26
As Edwgiz уже сказал, результат зависит от часового пояса, поэтому убедитесь, что вы указали нужный часовой пояс. Я предпочитаю писать числа с таким количеством цифр с подчеркиванием в качестве разделителя тысяч для удобства чтения. A LocalDate
- это дата в prolepti c григорианском календаре без времени дня, поэтому сравнение двух таких объектов гарантирует, что мы игнорируем время дня в сравнении.
PS Сравнение дня месяца как в угловых случаях этого недостаточно. Это даст истину при сравнении 27 февраля этого года с 27 ноября прошлого года. Если бы мы хотели использовать Calendar
, нам нужно было бы сравнить эру, год, месяц и день месяца. Другими словами, он не предлагает такую хорошую поддержку нашей работы, как java .time.
Ссылка на учебник: Oracle учебник: Дата и время объясняет, как использовать java .time.