按区域设置顺序获取工作日

Mee*_*eep 2 android locale calendar dayofweek java-time

我想看看我们是否可以按区域设置排列工作日。例如,在美国语言环境中,我们将从星期日开始,而法国将从星期一开始(就日历而言)。为了理解它,我正在制作一个闹钟应用程序,其中工作日的闹钟会在某些日子重复 -

在此输入图像描述

以下是我所看到的工作日未按顺序排列的

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."
Run Code Online (Sandbox Code Playgroud)

Ole*_*.V. 7

java.time

\n\n
public static void printWeekdays(Locale loc) {\n    WeekFields wf = WeekFields.of(loc);\n    DayOfWeek day = wf.getFirstDayOfWeek();\n    for (int i = 0; i < DayOfWeek.values().length; i++) {\n        System.out.println(day.getDisplayName(TextStyle.SHORT, loc));\n        day = day.plus(1);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

让\xe2\x80\x99s 尝试一下:

\n\n
    printWeekdays(Locale.US);\n
Run Code Online (Sandbox Code Playgroud)\n\n

该调用的输出是:

\n\n
\n
Sun\nMon\nTue\nWed\nThu\nFri\nSat\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

或者用法语:

\n\n
    printWeekdays(Locale.FRANCE);\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n
lun.\nmar.\nmer.\njeu.\nven.\nsam.\ndim.\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

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

\n\n

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

\n\n
    \n
  • 在 Java 8 及更高版本以及较新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • \n
  • 在 Java 6 和 7 中,获取 ThreeTen Backport,即新类的向后移植(ThreeTen for JSR 310;请参阅底部的链接)。
  • \n
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它\xe2\x80\x99s 称为ThreeTenABP。并确保从org.threeten.bp子包中导入日期和时间类。
  • \n
\n\n

链接

\n\n\n