Как понизить код java.time в старом Android? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть этот аккуратный код, который генерирует список дней между двумя датами, а затем дату текущего дня, а также его положение в списке (самое главное, все даты в одном формате, что позволяет легко их сравнивать).

//Create list of days
String s = "2018-08-28";
String e = "2018-09-05";
LocalDate start = LocalDate.parse(s);
LocalDate end = LocalDate.parse(e);
List<LocalDate> totalDates = new ArrayList<>();
while (!start.isAfter(end)) {
    totalDates.add(start);
    start = start.plusDays(1);
}

//Date and place of current day
LocalDate a = LocalDate.now();
int current_day = totalDates.indexOf(a) + 1;

Проблема в том, что когда я играл с этим кодом в Java IDE, я не знал, что некоторые его части (.parse() ; .now() ; .isAfter() ; .plusDays()) были зарезервированы для телефонов API уровня 26+. Или максимальное API, в котором должно работать мое приложение, - это API 23.

Я хочу знать, как я могу «понизить» его наиболее эффективным способом, и я не знаю, что делать или с чего начать.

1 Ответ

0 голосов
/ 30 августа 2018

Back-порт

Нет необходимости "понижать рейтинг". Большая часть функциональности java.time была перенесена обратно.

Добавьте библиотеку ThreeTen-Backport к вашему зонду, адаптированную для Android специально в проекте ThreeTenABP . См. Ссылки ниже, внизу.

Унаследованные классы даты и времени представляют собой ужасно ужасный беспорядок - никогда не используйте их.

Кстати, те текстовые форматы, на которые вы ссылались, являются стандартными, определенными в ISO 8601 . Классы java.time по умолчанию используют эти форматы при разборе / генерации строк.


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где получить классы java.time?

...