Время для современного ответа.
java.time и ThreeTenABP
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d/M/u");
String validUntil = "1/1/1990";
LocalDate validDate = LocalDate.parse(validUntil, dateFormatter);
LocalDate currentDate = LocalDate.now(ZoneId.of("Pacific/Efate"));
if (currentDate.isAfter(validDate)) {
System.out.println("Catalog is outdated");
}
Когда я только что запустил этот код, результат был:
Каталог устарел
Поскольку во всех часовых поясах дата никогда не бывает одной и той же, укажите точный часовой пояс LocalDate.now. Если вы хотите, чтобы каталог истек одновременно во всех часовых поясах, вы можете указатьZoneOffset.UTC пока вы сообщаете пользователям, что вы используете UTC.
Я использую java.time, современный API даты и времени Java. Классы даты и время , которые вы использовали, Calendar, SimpleDateFormatи Date, все плохо разработаны и к счастью , давно устарели. Кроме того, несмотря на название Date, а представляет собой не дату, а момент времени. Одно из следствий этого: хотя сегодня 15 февраля 2019 г., вновь созданный Dateобъект уже находится после (а значит, не равен) Dateобъекту из синтаксического анализа 15/02/2019. Некоторых это смущает. В отличие от этого, современная LocalDateдата - это дата без времени суток (и без часового пояса), поэтому два LocalDates, представляющие сегодняшнюю дату, всегда будут равны.
Вопрос: Могу ли я использовать java.time на Android?
Да, java.time прекрасно работает на старых и новых устройствах Android. Просто требуется как минимум Java 6 .
- В Java 8 и новее, а также на новых устройствах Android (начиная с уровня API 26) современный API встроен.
- В Java 6 и 7 используйте ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
- На (более старом) Android используйте Android-версию ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bpподпакетов.
Ссылки
Calendar,SimpleDateFormat,Dateили любой из других длинных устаревших даты и времени Java классов. Вместо этого используйтеjava.timeсовременный API даты и времени Java . Да, вы можете использовать его на Android. Для более старых версий Android см. Как использовать ThreeTenABP в Android Project .