在java.time.DayOfWeekJava中8日期时间API枚举描述了一周的日子。枚举具有从DayOfWeek.MONDAY到的常量值DayOfWeek.SUNDAY。这些枚举也具有其1等于MONDAY和7等于的整数值SUNDAY。
在下面的代码片段中,您可以看到一些DayOfWeek枚举的用法。我们首先使用values()返回的数组的方法获取所有枚举值DayOfWeek。我们迭代此数组并打印出枚举值及其对应的整数值。
// 获取DayOfWeek枚举值 DayOfWeek[] dayOfWeeks = DayOfWeek.values(); for (int i = 0; i < dayOfWeeks.length; i++) { DayOfWeek dayOfWeek = dayOfWeeks[i]; System.out.println("dayOfWeek[" + i + "] = " + dayOfWeek + "; value = " + dayOfWeek.getValue()); }
要创建DayOfWeek对象,我们可以使用of(int)工厂方法。我们传递此方法的整数值。例如,给予1将给我们带来收益DayOfWeek.MONDAY。我们还可以利用枚举valueOf(String)方法从字符串值创建枚举。
// 从int值获取DayOfWeek DayOfWeek dayOfWeek = DayOfWeek.of(1); System.out.println("dayOfWeek = " + dayOfWeek); // 从字符串值获取DayOfWeek dayOfWeek = DayOfWeek.valueOf("SATURDAY"); System.out.println("dayOfWeek = " + dayOfWeek);
要从DayOfWeek日期时间对象获取,我们可以使用getDayOfWeek()方法。在下面,我们从一个LocalDate对象获取星期几。
// 获取日期对象的DayOfWeek LocalDate date = LocalDate.now(); DayOfWeek dow = date.getDayOfWeek(); System.out.println("Date = " + date); System.out.println("Dow = " + dow + "; value = " + dow.getValue());
我们还可以获取特定语言环境的星期几。为此,我们可以使用该DayOfWeek.getDisplayName(TextStyle, Locale)方法。该TextStyle可以是有价值的TextStyle.FULL,TextStyle.SHORT,TextStyle.NARROW这将给我们充分,短,窄版的显示名称。下面的示例获取印度尼西亚语和德语版本的显示名称。
// 获取不同语言环境的DayOfWeek显示名称。 Locale locale = new Locale("id", "ID"); String indonesian = dow.getDisplayName(TextStyle.SHORT, locale); System.out.println("ID = " + indonesian); String germany = dow.getDisplayName(TextStyle.FULL, Locale.GERMANY); System.out.println("DE = " + germany);
还有plus(long)一种可用于增加DayOfWeek对象天数的方法。例如,加4MONDAY将给我们DayOfWeek.FRIDAY。
// 将天数添加到DayOfWeek枚举中。 System.out.println("DayOfWeek.MONDAY.plus(4) = " + DayOfWeek.MONDAY.plus(4));
这是上述代码段的完整代码:
package org.nhooo.example.datetime; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; public class DayOffWeekExample { public static void main(String[] args) { // 获取DayOfWeek枚举值 DayOfWeek[] dayOfWeeks = DayOfWeek.values(); for (int i = 0; i < dayOfWeeks.length; i++) { DayOfWeek dayOfWeek = dayOfWeeks[i]; System.out.println("dayOfWeek[" + i + "] = " + dayOfWeek + "; value = " + dayOfWeek.getValue()); } // 从int值获取DayOfWeek DayOfWeek dayOfWeek = DayOfWeek.of(1); System.out.println("dayOfWeek = " + dayOfWeek); // 从字符串值获取DayOfWeek dayOfWeek = DayOfWeek.valueOf("SATURDAY"); System.out.println("dayOfWeek = " + dayOfWeek); // 获取日期对象的DayOfWeek LocalDate date = LocalDate.now(); DayOfWeek dow = date.getDayOfWeek(); System.out.println("Date = " + date); System.out.println("Dow = " + dow + "; value = " + dow.getValue()); // 获取不同语言环境的DayOfWeek显示名称。 Locale locale = new Locale("id", "ID"); String indonesian = dow.getDisplayName(TextStyle.SHORT, locale); System.out.println("ID = " + indonesian); String germany = dow.getDisplayName(TextStyle.FULL, Locale.GERMANY); System.out.println("DE = " + germany); // 将天数添加到DayOfWeek枚举中。 System.out.println("DayOfWeek.MONDAY.plus(4) = " + DayOfWeek.MONDAY.plus(4)); } }
上面代码的结果是:
dayOfWeek[0] = MONDAY; value = 1 dayOfWeek[1] = TUESDAY; value = 2 dayOfWeek[2] = WEDNESDAY; value = 3 dayOfWeek[3] = THURSDAY; value = 4 dayOfWeek[4] = FRIDAY; value = 5 dayOfWeek[5] = SATURDAY; value = 6 dayOfWeek[6] = SUNDAY; value = 7 dayOfWeek = MONDAY dayOfWeek = SATURDAY Date = 2015-11-16 Dow = MONDAY; value = 1 ID = Sen DE = Montag DayOfWeek.MONDAY.plus(4) = FRIDAY