- 所有已实现的接口:
Serializable,Comparable<Month>,Constable,TemporalAccessor,TemporalAdjuster
Month 是代表一年中 12 个月的枚举 - 一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月和十二月。
除了文本枚举名称之外,每个月份都有一个 int 值。 int 值遵循正常用法和 ISO-8601 标准,从 1(一月)到 12(十二月)。建议应用程序使用枚举而不是 int 值以确保代码清晰。
不要使用 ordinal() 获取 Month 的数字表示。请改用 getValue()。
这个枚举代表了一个常见的概念,在许多日历系统中都能找到。因此,这个枚举可以被任何具有与 ISO-8601 日历系统完全相同定义的年月概念的日历系统使用。
- 实现要求:
- 这是一个不可变且线程安全的枚举。
- 自从:
- 1.8
-
内部类总结
在类 java.lang.Enum 中声明的嵌套类/接口
Enum.EnumDesc<E extends Enum<E>> -
枚举常量总结
枚举常量枚举常量描述4 月份的单例实例,有 30 天。8 月的单例实例,共 31 天。12 月的单例实例,共 31 天。2 月份的单例实例有 28 天,闰年为 29 天。一月份的单例实例有 31 天。7 月的单例实例,共 31 天。6 月份的单例实例,有 30 天。3 月的单例实例,共 31 天。5 月份的单例实例,共 31 天。11 月份的单例实例有 30 天。10 月份的单例实例,共 31 天。9 月份的单例实例有 30 天。 -
方法总结
修饰符和类型方法描述adjustInto(Temporal temporal) 调整指定的时间对象以具有这个月份。intfirstDayOfYear(boolean leapYear) 获取对应于本月第一天的年中第几天。获取本季度第一个月对应的月份。static Monthfrom(TemporalAccessor temporal) 从时间对象中获取Month的实例。intget(TemporalField field) 从这个月份获取指定字段的值作为int。getDisplayName(TextStyle style, Locale locale) 获取文本表示形式,例如“Jan”或“December”。longgetLong(TemporalField field) 从这个月份获取指定字段的值作为long。intgetValue()获取月份int值。booleanisSupported(TemporalField field) 检查是否支持指定的字段。intlength(boolean leapYear) 获取本月的天数。int获取本月的最大长度(以天为单位)。int获取本月的最短天数。minus(long months) 返回在此之前的指定月数的一年中的月份。static Monthof(int month) 从int值获取Month的实例。plus(long months) 返回一年中的月份,即在此月份之后的指定月份数。<R> Rquery(TemporalQuery<R> query) 使用指定的查询查询这个月份。range(TemporalField field) 获取指定字段的有效值范围。static Month返回具有指定名称的此类的枚举常量。static Month[]values()返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
-
枚举常量详细信息
-
JANUARY
一月份的单例实例有 31 天。这具有1的数值。 -
FEBRUARY
2 月份的单例实例有 28 天,闰年为 29 天。这具有2的数值。 -
MARCH
3 月的单例实例,共 31 天。这具有3的数值。 -
APRIL
4 月份的单例实例,有 30 天。这具有4的数值。 -
MAY
5 月份的单例实例,共 31 天。这具有5的数值。 -
JUNE
月份的单例实例,有 30 天。这具有6的数值。 -
JULY
7 月的单例实例,共 31 天。这具有7的数值。 -
AUGUST
8 月的单例实例,共 31 天。这具有8的数值。 -
SEPTEMBER
9 月份的单例实例有 30 天。这具有9的数值。 -
OCTOBER
10 月份的单例实例,共 31 天。这具有10的数值。 -
NOVEMBER
11 月份的单例实例有 30 天。这具有11的数值。 -
DECEMBER
12 月的单例实例,共 31 天。这具有12的数值。
-
-
方法详情
-
values
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。- 返回:
- 包含此枚举类常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)- 参数:
name- 要返回的枚举常量的名称。- 返回:
- 具有指定名称的枚举常量
- 抛出:
IllegalArgumentException- 如果此枚举类没有具有指定名称的常量NullPointerException- 如果参数为空
-
of
从int值获取Month的实例。Month是代表一年中 12 个月的枚举。该工厂允许从int值中获取枚举。int值遵循 ISO-8601 标准,从 1(一月)到 12(十二月)。- 参数:
month- 要表示的月份,从 1(一月)到 12(十二月)- 返回:
- 月份,不为空
- 抛出:
DateTimeException- 如果月份无效
-
from
从时间对象中获取Month的实例。这将根据指定的时间获得一个月。
TemporalAccessor表示一组任意的日期和时间信息,该工厂将其转换为Month的一个实例。转换提取
MONTH_OF_YEAR字段。仅当时间对象具有 ISO 年表或可以转换为LocalDate时才允许提取。此方法与功能接口
TemporalQuery的签名相匹配,允许它通过方法参考Month::from用作查询。- 参数:
temporal- 要转换的时间对象,不为空- 返回:
- 月份,不为空
- 抛出:
DateTimeException- 如果无法转换为Month
-
getValue
public int getValue()获取月份int值。这些值按照 ISO-8601 标准编号,从 1(一月)到 12(十二月)。
- 返回:
- 一年中的月份,从 1(一月)到 12(十二月)
-
getDisplayName
获取文本表示形式,例如“Jan”或“December”。这将返回用于标识月份的文本名称,适合呈现给用户。参数控制返回文本的样式和locale。
如果未找到文本映射,则返回
numeric value。- 参数:
style- 所需文本的长度,不为空locale- 要使用的locale,不为空- 返回:
- 月份的文本值,不为空
-
isSupported
检查是否支持指定的字段。这将检查是否可以查询指定字段的月份。如果为 false,则调用
range和get方法将抛出异常。如果该字段为
MONTH_OF_YEAR,则此方法返回 true。所有其他ChronoField实例将返回 false。如果该字段不是
ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。字段是否支持由字段决定。- 指定者:
isSupported在接口TemporalAccessor中- 参数:
field- 要检查的字段,null 返回 false- 返回:
- 如果这个月份支持该字段,则为 true,否则为 false
-
range
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。这个月用于增强返回范围的准确性。如果由于不支持该字段或其他原因而无法返回范围,则会抛出异常。
如果该字段为
MONTH_OF_YEAR,则将返回从 1 到 12 的月份范围。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取范围由字段决定。- 指定者:
range在接口TemporalAccessor中- 参数:
field- 查询范围的字段,不为空- 返回:
- 该字段的有效值范围,不为空
- 抛出:
DateTimeException- 如果无法获得该字段的范围UnsupportedTemporalTypeException- 如果不支持该字段
-
get
从这个月份获取指定字段的值作为int。这会在本月查询指定字段的值。返回值将始终在该字段的有效值范围内。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段为
MONTH_OF_YEAR,则将返回从 1 到 12 的月份值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
get在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 字段的值,在值的有效范围内
- 抛出:
DateTimeException- 如果无法获取该字段的值或该值超出该字段的有效值范围UnsupportedTemporalTypeException- 如果不支持该字段或值的范围超过intArithmeticException- 如果发生数字溢出
-
getLong
从这个月份获取指定字段的值作为long。这会在本月查询指定字段的值。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段为
MONTH_OF_YEAR,则将返回从 1 到 12 的月份值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
getLong在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 该字段的值
- 抛出:
DateTimeException- 如果无法获得该字段的值UnsupportedTemporalTypeException- 如果不支持该字段ArithmeticException- 如果发生数字溢出
-
plus
返回一年中的月份,即在此月份之后的指定月份数。计算从 12 月到 1 月左右的年底滚动。指定期间可能为负数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
months- 要添加的月份,正数或负数- 返回:
- 结果月份,不为空
-
minus
返回在此之前的指定月数的一年中的月份。计算从年初开始,从一月到十二月。指定期间可能为负数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
months- 要减去的月份,正数或负数- 返回:
- 结果月份,不为空
-
length
public int length(boolean leapYear) 获取本月的天数。这需要一个标志来确定是否返回闰年的长度。
二月平年有28天,闰年有29天。 4 月、6 月、9 月和 11 月有 30 天。所有其他月份都有 31 天。
- 参数:
leapYear- 如果闰年需要长度则为真- 返回:
- 这个月的天数,从 28 到 31
-
minLength
public int minLength()获取本月的最短天数。二月的最短长度为 28 天。 4 月、6 月、9 月和 11 月有 30 天。所有其他月份都有 31 天。
- 返回:
- 本月的最短天数,从 28 到 31
-
maxLength
public int maxLength()获取本月的最大长度(以天为单位)。二月最长为 29 天。 4 月、6 月、9 月和 11 月有 30 天。所有其他月份都有 31 天。
- 返回:
- 本月的最大天数,从 29 到 31
-
firstDayOfYear
public int firstDayOfYear(boolean leapYear) 获取对应于本月第一天的年中第几天。这将返回本月开始的一年中的第几天,使用闰年标志来确定二月的长度。
- 参数:
leapYear- 如果闰年需要长度则为真- 返回:
- 对应于本月第一天的一年中的第几天,从 1 到 336
-
firstMonthOfQuarter
获取本季度第一个月对应的月份。一年可分为四个季度。此方法返回基月的季度的第一个月。一月、二月和三月返回一月。四月、五月和六月返回四月。七月、八月和九月返回七月。十月、十一月和十二月返回十月。
- 返回:
- 本月对应季度的第一个月,不为空
-
query
使用指定的查询查询这个月份。这使用指定的查询策略对象查询这个月份。
TemporalQuery对象定义了用于获取结果的逻辑。阅读查询文档以了解此方法的结果。此方法的结果是通过对指定查询调用
TemporalQuery.queryFrom(TemporalAccessor)方法并将this作为参数传递来获得的。- 指定者:
query在接口TemporalAccessor中- 类型参数:
R- 结果的类型- 参数:
query- 要调用的查询,不为空- 返回:
- 查询结果,可能返回null(由查询定义)
- 抛出:
DateTimeException- 如果无法查询(由查询定义)ArithmeticException- 如果发生数字溢出(由查询定义)
-
adjustInto
调整指定的时间对象以具有这个月份。这将返回一个与输入相同的可观察类型的时间对象,其中月份更改为与此相同。
调整相当于使用
Temporal.with(TemporalField, long)传递ChronoField.MONTH_OF_YEAR作为字段。如果指定的时间对象不使用 ISO 日历系统,则抛出DateTimeException。在大多数情况下,使用
Temporal.with(TemporalAdjuster)反转调用模式会更清楚:// these two lines are equivalent, but the second approach is recommended temporal = thisMonth.adjustInto(temporal); temporal = temporal.with(thisMonth);
例如,给定一个五月的日期,输出如下:
dateInMay.with(JANUARY); // four months earlier dateInMay.with(APRIL); // one months earlier dateInMay.with(MAY); // same date dateInMay.with(JUNE); // one month later dateInMay.with(DECEMBER); // seven months later
此实例是不可变的,不受此方法调用的影响。
- 指定者:
adjustInto在接口TemporalAdjuster中- 参数:
temporal- 要调整的目标对象,不为空- 返回:
- 调整后的对象,不为空
- 抛出:
DateTimeException- 如果无法进行调整ArithmeticException- 如果发生数字溢出
-