模块  java.base
软件包  java.time

Enum Month

  • 实现的所有接口
    SerializableComparable<Month>TemporalAccessorTemporalAdjuster

    public enum Monthextends 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 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)
        获取文本表示,例如'Jan'或'December'。

        这将返回用于标识月份的文本名称,适合呈现给用户。 参数控制返回文本的样式和区域设置。

        如果未找到文本映射,则返回numeric value

        参数
        style - 所需文本的长度,而不是null
        locale - 要使用的语言环境,而不是null
        结果
        年份的文本值,不为空
      • isSupported

        public boolean isSupported​(TemporalField field)
        检查是否支持指定的字段。

        这将检查是否可以查询指定字段的年月。 如果为false,则调用rangeget方法将引发异常。

        如果该字段为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 - 如果发生数字溢出