Даже если вы не хотите отображать номер недели, вам следует использовать форматтер для форматирования даты для отображения. Это, в свою очередь, позаботится и о номере недели. Я предлагаю вам объявить форматер константой в вашем классе:
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("d/M/u 'Uke' w", Locale.forLanguageTag("no"));
Теперь все остальное довольно просто:
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
LocalDate dato = LocalDate.of(year, monthOfYear + 1, dayOfMonth);
datoText.setText(dato.format(DATE_FORMATTER));
}
Это покажет строку как 2/4/2019 Uke 14
. Вы можете адаптировать строку шаблона формата к желаемому выводу. Буквы, которые не следует интерпретировать как буквы шаблона формата, заключаются в одинарные кавычки (апострофы), например, 'Uke'
.
Я использую java.time, современный Java-интерфейс даты и времени.
Вопрос: Могу ли я использовать 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
с подпакетами.
Если вы не можете позволить себе внешнюю зависимость (даже для надежной библиотеки и библиотеки, ориентированной на будущее), старомодный SimpleDateFormat
можно использовать аналогичным образом, но только после того, как вы сначала преобразовали выбранные значения в Calendar
и затем Date
. Имейте в виду, однако, что класс SimpleDateFormat
общеизвестно проблематичен и также не безопасен для потоков.
Ссылки