Проверка что дата меньше 60 дней
Необходимо проверить что до конца даты активации осталось меньше 60 дней. Но не пойму как сделать чтоб если дата меньше двух месяцев, то делаем это, а если больше то это.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long timeUp = format.parse(DateActivation).getTime();
long diff = System.currentTimeMillis() - timeUp;
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.println(DateActivation);
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Например:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String inputString1 = "2020-04-13 00:00:00";
String inputString2 = "2020-01-13 00:00:00";
Date date1 = format.parse(inputString1);
Date date2 = format.parse(inputString2);
long diff = Math.abs(date2.getTime() - date1.getTime());
long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
System.out.println("Days: " + days);
if (days >= 60) {
System.out.println("Прошло 60 или больше дней");
} else {
System.out.println("Прошло меньше 60 дней");
}
UPD.
Если сравнивать текущую дату с заданной:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String inputString = "2020-01-13 00:00:00";
Date date = format.parse(inputString);
long diff = Math.abs(System.currentTimeMillis() - date.getTime());
long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
System.out.println("Days: " + days);
if (days >= 60) {
System.out.println("Прошло 60 или больше дней");
} else {
System.out.println("Прошло меньше 60 дней");
}
Автор решения: coolsv
→ Ссылка
Можно использовать java.time.Period.
Правда, точность будет до дней, а часы, минуты и секунды придется отбросить:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDate activationDate = LocalDate.parse("2020-02-13 22:12:34", dtf);
System.out.println(Period.between(activationDate, LocalDate.now()).getMonths()); //2