Метод который возвращает русское название дня недели с английского в одну строку

Рейтинг: -1Ответов: 2Опубликовано: 22.08.2023

Задача в том чтобы метод getRusName() возвращал русское название дня недели. Метод должен быть сделан в одну строку. Единственное что я нашел более менее подходящее это пробовать через SimpleDateFormat, но как не пытался так и не понял можно ли с помощью этого класса решить в одну строку данных метод. У кого какие идеи есть?

Дополнительно: регистр вывода не важен

public enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY;

    public String getRusName() {
        switch (this) {
            case MONDAY -> {
                return "Понедельник";
            }
            case TUESDAY -> {
                return "Вторник";
            }
            case WEDNESDAY -> {
                return "Среда";
            }
            case THURSDAY -> {
                return "Четверг";
            }
            case FRIDAY -> {
                return "Пятница";
            }
            case SATURDAY -> {
                return "Суббота";
            }
            case SUNDAY -> {
                return "Воскресенье";
            }
        }
        return null;
    }
}

Ответы

▲ 0Принят

В любом случае придётся прописывать переводы, и как по мне это самый короткий вариант:

public enum Day {
    MONDAY("Понедельник"),
    TUESDAY("Вторник"),
    WEDNESDAY("Среда"),
    THURSDAY("Четверг"),
    FRIDAY("Пятница"),
    SATURDAY("Суббота"),
    SUNDAY("Воскресенье");
    
    String russian;
    Day(String rus) { russian = rus; }
    public String getRusName() { return russian; }
}

Использование:

Day day = Day.MONDAY;
System.out.println(day.getRusName())
▲ 3

Стандартный способ для получения названий дней недели из заданной локали -- метод DayOfWeek::getDisplayName(TextStyle style, Locale locale):

DayOfWeek dow = LocalDate.now().getDayOfWeek();

Locale ru = new Locale("ru", "RU");

System.out.println(dow.getDisplayName(TextStyle.FULL, ru));  // вторник
System.out.println(dow.getDisplayName(TextStyle.SHORT, ru)); // вт

Для русской локали названия дней недели по умолчанию пишутся со строчной буквы.

Также существует класс DateFormatSymbols, в котором кроме чтения названий дней недели getWeekdays() / getShortWeekdays() при желании можно установить новые значения для написания дней недели.