Получить рабочие дни в порядке по языку
Я пытаюсь выяснить, можем ли мы навести порядок в буднях по локали. Например, в локали США мы начнем с воскресенья, а FR - с понедельника (в терминах календаря). Чтобы разобраться в этом, я создаю приложение для будильника с рабочими днями, когда будильник повторяется в определенные дни -
Вот будни не в порядке, что я вижу в
new DateFormatSymbols().getShortWeekdays();
0 = ""
1 = "Sun"
2 = "Mon"
3 = "Tue"
4 = "Wed"
5 = "Thu"
6 = "Fri"
7 = "Sat"
0 = ""
1 = "dim."
2 = "lun."
3 = "mar."
4 = "mer."
5 = "jeu."
6 = "ven."
7 = "sam."
1 ответ
Решение
java.time
public static void printWeekdays(Locale loc) {
WeekFields wf = WeekFields.of(loc);
DayOfWeek day = wf.getFirstDayOfWeek();
for (int i = 0; i < DayOfWeek.values().length; i++) {
System.out.println(day.getDisplayName(TextStyle.SHORT, loc));
day = day.plus(1);
}
}
Давайте попробуем это:
printWeekdays(Locale.US);
Результат этого вызова:
Sun Mon Tue Wed Thu Fri Sat
Или по-французски:
printWeekdays(Locale.FRANCE);
Теперь понедельник / лунди на первом месте, и по-французски, конечно:
lun. mar. mer. jeu. ven. sam. dim.
Вопрос: Могу ли я использовать 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
с подпакетами.
связи
- Учебник Oracle: Дата и время, объясняющие, как использовать
java.time
, - Запрос спецификации Java (JSR) 310, где
java.time
был впервые описан. - ThreeTen Backport проект, бэкпорт
java.time
в Java 6 и 7 (ThreeTen для JSR-310). - ThreeTenABP, Android-версия ThreeTen Backport
- Вопрос: Как использовать ThreeTenABP в Android Project, с очень подробным объяснением.