java.time
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
LocalDate date = LocalDate.of(year, Month.values()[month], dayOfMonth);
String selectedDates = date.toString();
dateTest.setText(selectedDates);
}
Как было сказано в комментариях, вам нужно подобрать дату, которую пользователь выбрал из аргументов, переданных onSelectedDayChange
. К сожалению, переданное month
основано на 0, число в интервале от 0 для января до 11 для декабря. Month.values()[month]
- мой трюк для получения правильного Month
объекта. Если вы предпочитаете, вы можете вместо этого просто добавить 1:
LocalDate date = LocalDate.of(year, month + 1, dayOfMonth);
Далее я использую тот факт, что LocalDate.toString
создает нужный формат, поэтому нам не нужен явный форматер. Формат ISO 8601.
Вопрос: Могу ли я использовать 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
с подпакетами.
Ссылки