按语言环境排列工作日

时间:2018-10-10 14:23:59

标签: android calendar locale dayofweek java.time

我正在尝试查看是否可以按地区顺序设置工作日。例如,在美国语言环境中,我们从星期日开始,而FR从星期一开始(就日历而言)。为了弄清这一点,我正在制作一个闹钟应用程序,该应用程序在某些特定日期重复闹钟的工作日-

enter image description here

这是我在

中看到的平日
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 个答案:

答案 0 :(得分:3)

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

现在星期一/ 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(JSR 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上,使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您使用子包从org.threeten.bp导入日期和时间类。

链接