- 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天。AUGUST8月份的单身实例,为31天。DECEMBER12月份的单例实例,为31天。FEBRUARY2月的单例实例为28天,或闰年为29天。JANUARY1月份的单例实例,为31天。JULY7月份的单例实例,为31天。JUNE6月份的单例实例,为期30天。MARCH三月份的单例实例,为31天。MAY五月份的单例实例,为31天。NOVEMBER11月份的单例实例,为期30天。OCTOBER10月份的单例实例,为31天。SEPTEMBER9月份的单例实例,为期30天。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 TemporaladjustInto(Temporal temporal)调整指定的时间对象以具有此月份。intfirstDayOfYear(boolean leapYear)获取与本月第一天相对应的年份。MonthfirstMonthOfQuarter()获取与本季度第一个月相对应的月份。static Monthfrom(TemporalAccessor temporal)从时态对象获得Month的实例。intget(TemporalField field)获取此月份中指定字段的值,作为int。StringgetDisplayName(TextStyle style, Locale locale)获取文本表示,例如'Jan'或'December'。longgetLong(TemporalField field)获取此月份中指定字段的值,作为long。intgetValue()获取年份int值。booleanisSupported(TemporalField field)检查是否支持指定的字段。intlength(boolean leapYear)以天为单位获取本月的长度。intmaxLength()获取此月的最大长度(以天为单位)。intminLength()获取此月的最小长度(以天为单位)。Monthminus(long months)返回在此之前指定月份的月份。static Monthof(int month)从int值获得Month的实例。Monthplus(long months)返回此日期之后指定月数的月份。<R> Rquery(TemporalQuery<R> query)使用指定的查询查询本月份的查询。ValueRangerange(TemporalField field)获取指定字段的有效值范围。static MonthvalueOf(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- 如果发生数字溢出
-
-