Время для современного ответа.
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
дата - это дата без времени суток (и без часового пояса), поэтому два LocalDate
s, представляющие сегодняшнюю дату, всегда будут равны.
Вопрос: Могу ли я использовать 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 .