- java.lang.Object
-
- java.lang.Enum<Month>
-
- java.time.Month
-
- 实现的所有接口
-
Serializable
,Comparable<Month>
,TemporalAccessor
,TemporalAdjuster
public enum Month extends Enum<Month> implements TemporalAccessor, TemporalAdjuster
一个月,例如'七月'。Month
是一个代表一年中12个月的枚举 - 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月和十二月。除文本枚举名称外,每个月的值
int
。int
值遵循正常使用和ISO-8601标准,从1(1月)到12(12月)。 建议应用程序使用枚举而不是int
值来确保代码清晰度。请勿使用
ordinal()
获取ordinal()
的数字表示Month
。 请改用getValue()
。此枚举代表了许多日历系统中的常见概念。 因此,该枚举可以由具有与ISO-8601日历系统完全等同的月份概念定义的任何日历系统使用。
- 实现要求:
- 这是一个不可变且线程安全的枚举。
- 从以下版本开始:
- 1.8
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 APRIL
四月份的单例实例,为期30天。AUGUST
8月份的单身实例,为31天。DECEMBER
12月份的单例实例,为31天。FEBRUARY
2月的单例实例为28天,或闰年为29天。JANUARY
1月份的单例实例,为31天。JULY
7月份的单例实例,为31天。JUNE
6月份的单例实例,为期30天。MARCH
三月份的单例实例,为31天。MAY
五月份的单例实例,为31天。NOVEMBER
11月份的单例实例,为期30天。OCTOBER
10月份的单例实例,为31天。SEPTEMBER
9月份的单例实例,为期30天。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Temporal
adjustInto(Temporal temporal)
调整指定的时间对象以具有此月份。int
firstDayOfYear(boolean leapYear)
获取与本月第一天相对应的年份。Month
firstMonthOfQuarter()
获取与本季度第一个月相对应的月份。static Month
from(TemporalAccessor temporal)
从时态对象获得Month
的实例。int
get(TemporalField field)
获取此月份中指定字段的值,作为int
。String
getDisplayName(TextStyle style, Locale locale)
获取文本表示,例如'Jan'或'December'。long
getLong(TemporalField field)
获取此月份中指定字段的值,作为long
。int
getValue()
获取年份int
值。boolean
isSupported(TemporalField field)
检查是否支持指定的字段。int
length(boolean leapYear)
以天为单位获取本月的长度。int
maxLength()
获取此月的最大长度(以天为单位)。int
minLength()
获取此月的最小长度(以天为单位)。Month
minus(long months)
返回在此之前指定月份的月份。static Month
of(int month)
从int
值获得Month
的实例。Month
plus(long months)
返回此日期之后指定月数的月份。<R> R
query(TemporalQuery<R> query)
使用指定的查询查询本月份的查询。ValueRange
range(TemporalField field)
获取指定字段的有效值范围。static Month
valueOf(String name)
返回具有指定名称的此类型的枚举常量。static Month[]
values()
按照声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
JANUARY
public static final Month JANUARY
1月份的单例实例,为31天。 其数值为1
。
-
FEBRUARY
public static final Month FEBRUARY
2月的单例实例为28天,或闰年为29天。 其数值为2
。
-
MARCH
public static final Month MARCH
三月份的单例实例,为31天。 其数值为3
。
-
APRIL
public static final Month APRIL
四月份的单例实例,为期30天。 其数值为4
。
-
MAY
public static final Month MAY
五月份的单例实例,为31天。 其数值为5
。
-
JUNE
public static final Month JUNE
6月份的单例实例,为期30天。 其数值为6
。
-
JULY
public static final Month JULY
7月份的单例实例,为31天。 其数值为7
。
-
AUGUST
public static final Month AUGUST
8月份的单身实例,为31天。 其数值为8
。
-
SEPTEMBER
public static final Month SEPTEMBER
9月份的单例实例,为期30天。 其数值为9
。
-
OCTOBER
public static final Month OCTOBER
10月份的单例实例,为31天。 其数值为10
。
-
NOVEMBER
public static final Month NOVEMBER
11月份的单例实例,为期30天。 其数值为11
。
-
DECEMBER
public static final Month DECEMBER
12月份的单例实例,为31天。 其数值为12
。
-
-
方法详细信息
-
values
public static Month[] values()
按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:for (Month c : Month.values()) System.out.println(c);
- 结果
- 包含此枚举类型常量的数组,按声明的顺序排列
-
valueOf
public static Month valueOf(String name)
返回具有指定名称的此类型的枚举常量。 该字符串必须与用于声明此类型中的枚举常量的标识符完全匹配。 (不允许使用无关的空白字符。)- 参数
-
name
- 要返回的枚举常量的名称。 - 结果
- 具有指定名称的枚举常量
- 异常
-
IllegalArgumentException
- 如果此枚举类型没有指定名称的常量 -
NullPointerException
- 如果参数为null
-
of
public static Month of(int month)
从int
值获得Month
的实例。Month
是代表一年中12个月的枚举。 此工厂允许从int
值获取枚举。int
值遵循ISO-8601标准,从1(1月)到12(12月)。- 参数
-
month
- 表示的月份,从1(1月)到12(12月) - 结果
- 一年中的月份,不是空的
- 异常
-
DateTimeException
- 如果月份无效
-
from
public static Month from(TemporalAccessor temporal)
从时态对象获得Month
的实例。这将根据指定的时间获得一个月。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为Month
的实例。转换将提取
MONTH_OF_YEAR
字段。 仅当时态对象具有ISO年表时,才允许提取,或者可以将LocalDate
转换为LocalDate
。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考Month::from
用作查询。- 参数
-
temporal
- 要转换的时态对象,而不是null - 结果
- 一年中的月份,不是空的
- 异常
-
DateTimeException
- 如无法兑换成Month
-
getValue
public int getValue()
获取年份int
值。这些值按照ISO-8601标准编号,从1(1月)到12(12月)。
- 结果
- 从1月(1月)到12月(12月)的月份
-
getDisplayName
public String getDisplayName(TextStyle style, Locale locale)
- 参数
-
style
- 所需文本的长度,而不是null -
locale
- 要使用的语言环境,而不是null - 结果
- 年份的文本值,不为空
-
isSupported
public boolean isSupported(TemporalField field)
检查是否支持指定的字段。这将检查是否可以查询指定字段的年月。 如果为false,则调用
range
和get
方法将引发异常。如果该字段为
MONTH_OF_YEAR
,则此方法返回true。 所有其他ChronoField
实例将返回false。如果该字段不是
ChronoField
,则通过调用TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 字段是否受支持由字段确定。- Specified by:
-
isSupported
在界面TemporalAccessor
- 参数
-
字段
- 要检查的字段,null返回false - 结果
- 如果该字段在此月份受支持,则为true,否则为false
-
range
public ValueRange range(TemporalField field)
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。 本月用于提高返回范围的准确性。 如果无法返回范围,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
MONTH_OF_YEAR
,则将返回1到12之间的月份范围。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 是否可以获得范围由该字段确定。- Specified by:
-
range
在界面TemporalAccessor
- 参数
-
字段
- 要查询范围的字段,而不是null - 结果
- 字段的有效值范围,不为null
- 异常
-
DateTimeException
- 如果无法获得该字段的范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段
-
get
public int get(TemporalField field)
获取此月份中指定字段的值,作为int
。这将在本月查询指定字段的值。 返回的值将始终在该字段的有效值范围内。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
MONTH_OF_YEAR
,则将返回1到12之间的月份值。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
get
接口TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 字段的值,在有效的值范围内
- 异常
-
DateTimeException
- 如果无法获取该字段的值或该值超出该字段的有效值范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段或值范围超过int
-
ArithmeticException
- 如果发生数字溢出
-
getLong
public long getLong(TemporalField field)
获取此月份中指定字段的值,作为long
。这将在本月查询指定字段的值。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段为
MONTH_OF_YEAR
,则将返回1到12之间的月份值。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
getLong
在界面TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 该字段的值
- 异常
-
DateTimeException
- 如果无法获得该字段的值 -
UnsupportedTemporalTypeException
- 如果不支持该字段 -
ArithmeticException
- 如果发生数字溢出
-
plus
public Month plus(long months)
返回此日期之后指定月数的月份。计算从12月到1月左右结束。 指定的期间可能是负数。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
months
- 要添加的月份,正面或负面 - 结果
- 结果月份,不为空
-
minus
public Month minus(long months)
返回在此之前指定月份的月份。计算从1月到12月左右开始。 指定的期间可能是负数。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
months
- 减去的月数,正数或负数 - 结果
- 结果月份,不为空
-
length
public int length(boolean leapYear)
以天为单位获取本月的长度。这需要一个标志来确定是否返回闰年的长度。
2月份标准年份为28天,闰年为29天。 四月,六月,九月和十一月有30天。 所有其他月份都有31天。
- 参数
-
leapYear
- 如果闰年需要长度,则为true - 结果
- 这个月的长度以天为单位,从28到31
-
minLength
public int minLength()
获取此月的最小长度(以天为单位)。2月的最短长度为28天。 四月,六月,九月和十一月有30天。 所有其他月份都有31天。
- 结果
- 这个月的最小长度,以天为单位,从28到31
-
maxLength
public int maxLength()
获取此月的最大长度(以天为单位)。2月的最长时间为29天。 四月,六月,九月和十一月有30天。 所有其他月份都有31天。
- 结果
- 本月的最大长度,以天为单位,从29到31
-
firstDayOfYear
public int firstDayOfYear(boolean leapYear)
获取与本月第一天相对应的年份。这将返回本月开始的日期,使用闰年标志来确定2月的长度。
- 参数
-
leapYear
- 如果闰年需要长度,则为true - 结果
- 对应于本月第一天的年份,从1到336
-
firstMonthOfQuarter
public Month firstMonthOfQuarter()
获取与本季度第一个月相对应的月份。这一年可以分为四个季度。 此方法返回基准月的季度的第一个月。 1月,2月和3月返回1月。 四月,五月和六月回归四月。 七月,八月和九月归还七月。 十月,十一月和十二月回归十月。
- 结果
- 本季度的第一个月对应于本月,不为空
-
query
public <R> R query(TemporalQuery<R> query)
使用指定的查询查询本月份的查询。这将使用指定的查询策略对象查询本月份。
TemporalQuery
对象定义用于获取结果的逻辑。 阅读查询文档以了解此方法的结果。此方法的结果是通过调用获得
TemporalQuery.queryFrom(TemporalAccessor)
在经过指定的查询方法this
作为参数。- Specified by:
-
query
在界面TemporalAccessor
- 参数类型
-
R
- 结果的类型 - 参数
-
query
- 要调用的查询,而不是null - 结果
- 查询结果,可以返回null(由查询定义)
- 异常
-
DateTimeException
- 如果无法查询(由查询定义) -
ArithmeticException
- 如果发生数字溢出(由查询定义)
-
adjustInto
public Temporal adjustInto(Temporal temporal)
调整指定的时间对象以具有此月份。这将返回与输入相同的可观察类型的时间对象,其中月份更改为与此相同。
该调整是相当于使用
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);
例如,给定5月的日期,输出以下内容:
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
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto
在界面TemporalAdjuster
- 参数
-
temporal
- 要调整的目标对象,而不是null - 结果
- 调整后的对象,不为空
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
-