按语言环境顺序获取工作日

Get weekdays in order by locale

我正在尝试查看是否可以按区域设置排序工作日。例如,在美国地区,我们将从星期天开始,而 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."

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);

现在 Monday/lundi 排在第一位,当然是法语:

lun.
mar.
mer.
jeu.
ven.
sam.
dim.

问题:我可以在 Android 上使用 java.time 吗?

是的,java.time 在新旧 Android 设备上都能很好地工作。它只需要至少 Java 6.

  • 在 Java 8 和更新的 Android 设备上(从 API 级别 26)内置现代 API。
  • 在 Java 6 和 7 中获取 ThreeTen Backport,新 类 的 backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 类。

链接