- java.lang.Object
-
- java.lang.Enum<Month>
-
- java.time.Month
-
- All Implemented Interfaces:
-
Serializable
,Comparable<Month>
,TemporalAccessor
,TemporalAdjuster
public enum Month extends Enum<Month> implements TemporalAccessor, TemporalAdjuster
一个月,如“七月”。Month
是代表今年12月,1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月和12月的枚举。除了文字枚举名称外,每个月都有一个
int
值。int
价值遵循正常使用和ISO-8601标准,从1月1日至12日(12月)。 建议应用程序使用枚举而不是int
值来确保代码清晰。不要使用
ordinal()
获得的数字表示Month
。 改用getValue()
。该枚举代表了许多日历系统中发现的常见概念。 因此,该枚举可能被任何具有与ISO-8601日历系统完全相同的年度概念的日历系统使用。
- 实现要求:
- 这是一个不可变的和线程安全的枚举。
- 从以下版本开始:
- 1.8
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 APRIL
4月份的单身实例,30天。AUGUST
8月份的单身人士31天。DECEMBER
12月份的单身人士31天。FEBRUARY
二月份的单身人士28天,或闰年29人。JANUARY
1月份的单身实例31天。JULY
7月份的单身人士31天。JUNE
6月份的单身人士30天。MARCH
3月份的单身人士31天。MAY
5月份的单身人士31天。NOVEMBER
11月份的单身人士30天。OCTOBER
10月份的单身人士31天。SEPTEMBER
9月份的单身实例,30天。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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)
获取文本表示,如“1月”或“12月”。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
二月份的单身人士28天,或闰年29人。 这个数值为2
。
-
MARCH
public static final Month MARCH
3月份的单身人士31天。 它的数值为3
。
-
APRIL
public static final Month APRIL
4月份的单身实例,30天。 这个数值为4
。
-
MAY
public static final Month MAY
5月份的单身人士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
- 如果参数为空
-
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
的实例。这取决于指定时间的一个月。 A
TemporalAccessor
代表日期和时间信息的任意集合,该工厂转换为Month
的实例。该转换提取了
MONTH_OF_YEAR
字段。 只有当时间对象具有ISO年表,或者可以转换为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
- 所需文本的长度,不为空 -
locale
- 要使用的语言环境,不为空 - 结果
- 月份的文本值不为空
-
isSupported
public boolean isSupported(TemporalField field)
检查指定的字段是否受支持。这将检查是否可以查询指定字段的年月日。 如果是false,那么调用
range
和get
方法会抛出异常。如果该字段为
MONTH_OF_YEAR
,则此方法返回true。 所有其他ChronoField
实例将返回false。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用得到TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数。 字段是否受支持由字段决定。- Specified by:
-
isSupported
在接口TemporalAccessor
- 参数
-
field
- 要检查的字段,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
- 参数
-
field
- 查询范围的字段,不为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
- 参数
-
field
- 要获取的字段,不为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
- 参数
-
field
- 要获取的字段,不为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)
以天为单位获得本月的长度。这需要一个标志来确定是否返回闰年的长度。
二月份在标准年份有28天,闰年有29天。 4月,6月,9月和11月有30天。 所有其他月份都有31天。
- 参数
-
leapYear
- 如果闰年需要长度,则为true - 结果
- 本月的天数为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)
获得与本月第一天对应的日期。这将返回本月开始的日期,使用闰年标志来确定2月的长度。
- 参数
-
leapYear
- 如果闰年需要长度,则为true - 结果
- 相当于本月第一天的一年中的一天,从1到336
-
firstMonthOfQuarter
public Month firstMonthOfQuarter()
获得与本季度第一个月相对应的月份。年份可分为四个季度。 此方法返回基准月份的季度的第一个月。 1月,2月和3月返回1月。 四月,五月和六月返回四月。 七月,八月和九月返回七月。 十月,十一月和十二月返回十月。
- 结果
- 本月第一个月对应本月,不为零
-
query
public <R> R query(TemporalQuery<R> query)
使用指定的查询查询此月份的一年。这使用指定的查询策略对象查询这个月份。
TemporalQuery
对象定义了用于获取结果的逻辑。 阅读查询的文档,以了解该方法的结果。该方法的结果是通过在指定的查询
this
作为参数调用TemporalQuery.queryFrom(TemporalAccessor)
方法获得的。- Specified by:
-
query
在接口TemporalAccessor
- 参数类型
-
R
- 结果的类型 - 参数
-
query
- 要调用的查询,不为空 - 结果
- 查询结果可能返回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 - 结果
- 调整对象,不为null
- 异常
-
DateTimeException
- 如果不能进行调整 -
ArithmeticException
- 如果发生数字溢出
-
-