# DayOfWeek 和 Month Enums

> 原文： [https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html](https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html)

Date-Time API 提供用于指定一周中的几天和一年中的几个月的枚举。

## DAYOFWEEK

[`DayOfWeek` ](https://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html)枚举由描述一周中几天的七个常数组成：`星期一`到 `SUNDAY` 。 `DayOfWeek` 常数的整数值范围从 1（星期一）到 7（星期日）。使用定义的常量（ `DayOfWeek.FRIDAY` ）使您的代码更具可读性。

此枚举还提供了许多方法，类似于基于时间的类提供的方法。例如，以下代码将“星期一”添加 3 天并打印结果。输出是“星期四”：

```
System.out.printf("%s%n", DayOfWeek.MONDAY.plus(3));

```

通过使用 [`getDisplayName（TextStyle，Locale）`](https://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html#getDisplayName-java.time.format.TextStyle-java.util.Locale-) 方法，您可以检索字符串以标识用户区域设置中的星期几。 [`TextStyle` ](https://docs.oracle.com/javase/8/docs/api/java/time/format/TextStyle.html)枚举使您可以指定要显示的字符串类型： `FULL` ， `NARROW` （通常是单个字母），或 `SHORT` （缩写）。 `STANDALONE` `TextStyle` 常量用于某些语言中，当用作日期的一部分时输出不同于单独使用时的输出。以下示例为“Monday”打印 `TextStyle` 的三种主要形式：

```
DayOfWeek dow = DayOfWeek.MONDAY;
Locale locale = Locale.getDefault();
System.out.println(dow.getDisplayName(TextStyle.FULL, locale));
System.out.println(dow.getDisplayName(TextStyle.NARROW, locale));
System.out.println(dow.getDisplayName(TextStyle.SHORT, locale));

```

此代码具有 `en` 语言环境的以下输出：

```
Monday
M
Mon

```

## 月

[`月`](https://docs.oracle.com/javase/8/docs/api/java/time/Month.html) 枚举包括 12 个月的常数， `1 月`至 `DECEMBER` 。与 `DayOfWeek` 枚举一样，`月`枚举是强类型的，并且每个常量的整数值对应于从 1（1 月）到 12（12 月）的 ISO 范围。使用定义的常量（ `Month.SEPTEMBER` ）使您的代码更具可读性。

`月`枚举还包括许多方法。以下代码行使用 `maxLength` 方法打印 2 月份的最大可能天数。输出为“29”：

```
System.out.printf("%d%n", Month.FEBRUARY.maxLength());

```

`月`枚举也实现了 [`getDisplayName（TextStyle，Locale）`](https://docs.oracle.com/javase/8/docs/api/java/time/Month.html#getDisplayName-java.time.format.TextStyle-java.util.Locale-) 方法来检索字符串，以使用指定的 `TextStyle 识别用户区域设置中的月份`。如果未定义特定的 `TextStyle` ，则返回表示常量的数值的字符串。以下代码使用三种主要文本样式打印八月份：

```
Month month = Month.AUGUST;
Locale locale = Locale.getDefault();
System.out.println(month.getDisplayName(TextStyle.FULL, locale));
System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
System.out.println(month.getDisplayName(TextStyle.SHORT, locale));

```

此代码具有 `en` 语言环境的以下输出：

```
August
A
Aug

```