java .time и ThreeTenABP
LocalDate apr23 = LocalDate.of(2020, Month.APRIL, 23);
LocalDate apr24 = LocalDate.of(2020, Month.APRIL, 24);
LocalDate today = LocalDate.now(ZoneId.of("Australia/Tasmania"));
if (today.equals(apr23)) {
System.out.println("It’s April 23");
} else if (today.equals(apr24)) {
System.out.println("It’s April 24");
} else {
System.out.println("It’s none of those dates");
}
Когда я запускал этот фрагмент сегодня (8 февраля в Тасмании), вывод был:
Это не те даты
Пожалуйста, укажите желаемый часовой пояс, в который я поместил Австралию / Тасманию. Чтобы использовать часовой пояс устройства, используйте ZoneId.systemDefault()
, только помните, что значение по умолчанию может быть изменено какой-либо другой частью вашей программы или любой другой программой, работающей в той же JVM, и в этом случае вы не получите настройки устройства.
Объект класса LocalDate
из java .time представляет дату. Так что это не строка и не int, но это то, что вам нужно. java .time - это современный Java API даты и времени, настоятельно рекомендуется. В дополнение к equals()
a LocalDate
также есть методы isAfter
и isBefore
. Если случается, что ваш пользователь не запускает ваше приложение именно на APril 23, вы можете использовать один из них, чтобы определить, что дата прошла (как только пользователь запустит приложение).
Вопрос: 't java .time требует Android API уровня 26?
java .time прекрасно работает как на старых, так и на новых Android устройствах. Для этого требуется как минимум Java 6 .
- В Java 8 и более поздних версиях, а также на более новых Android устройствах (начиная с уровня API 26) современный встроенный API -in.
- В не- Android Java 6 и 7 получите ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. ссылки внизу).
Вкл. (Старше) Android Используйте редакцию ThreeTen Backport Android. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp
с подпакетами. Итак:
import org.threeten.bp.LocalDate;
import org.threeten.bp.Month;
import org.threeten.bp.ZoneId;
Поскольку вы используете Gradle, эта строка в вашем build.gradle
должна сделать это (взято из репозитория Maven):
compile group: 'com.jakewharton.threetenabp', name: 'threetenabp', version: '1.2.2'
Если я правильно помню, этот синтаксис работает тоже (сохраните любые опечатки):
compile 'com.jakewharton.threetenabp:threetenabp:1.2.2'
Ссылки