Module java.base
Package java.time

Class YearMonth

java.lang.Object
java.time.YearMonth
所有已实现的接口:
Serializable, Comparable<YearMonth>, Temporal, TemporalAccessor, TemporalAdjuster

public final class YearMonth extends Object implements Temporal, TemporalAdjuster, Comparable<YearMonth>, Serializable
ISO-8601日历系统中的年月,例如2007-12

YearMonth是一个不可变的日期时间对象,表示年和月的组合。可以获取从年和月派生的任何字段,例如季度。

此类不存储或表示日期、时间或时区。例如,值"2007年10月"可以存储在YearMonth中。

ISO-8601日历系统是当今世界大部分地区使用的现代公历系统。它等同于先验的格里高利历日历系统,其中适用于所有时间的闰年规则。对于今天编写的大多数应用程序,ISO-8601规则完全适用。但是,任何使用历史日期并要求其准确的应用程序将发现ISO-8601方法不适用。

这是一个基于值的类;程序员应该将相等的实例视为可互换的,不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。应该使用equals方法进行比较。

实现要求:
此类是不可变的且线程安全的。
自版本:
1.8
参见:
  • Method Details

    • now

      public static YearMonth now()
      从默认时区的系统时钟获取当前年月。

      这将查询默认时区中的系统时钟以获取当前年月。

      使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。

      返回:
      使用系统时钟和默认时区的当前年月,非空
    • now

      public static YearMonth now(ZoneId zone)
      从指定时区的系统时钟获取当前年月。

      这将查询系统时钟以获取当前年月。指定时区避免依赖默认时区。

      使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。

      参数:
      zone - 要使用的区域ID,非空
      返回:
      使用系统时钟的当前年月,非空
    • now

      public static YearMonth now(Clock clock)
      从指定时钟获取当前年月。

      这将查询指定的时钟以获取当前年月。使用此方法允许在测试中使用替代时钟。可以使用依赖注入引入替代时钟。

      参数:
      clock - 要使用的时钟,非空
      返回:
      当前年月,非空
    • of

      public static YearMonth of(int year, Month month)
      从年和月获取YearMonth的实例。
      参数:
      year - 要表示的年份,从MIN_YEAR到MAX_YEAR
      month - 要表示的年份中的月份,非空
      返回:
      年月,非空
      抛出:
      DateTimeException - 如果年份值无效
    • of

      public static YearMonth of(int year, int month)
      从年和月获取YearMonth的实例。
      参数:
      year - 要表示的年份,从MIN_YEAR到MAX_YEAR
      month - 要表示的年份中的月份,从1(一月)到12(十二月)
      返回:
      年月,非空
      抛出:
      DateTimeException - 如果任一字段值无效
    • from

      public static YearMonth from(TemporalAccessor temporal)
      从时间对象获取YearMonth的实例。

      根据指定的时间对象获取一个年月。 TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为YearMonth的实例。

      转换提取YEARMONTH_OF_YEAR字段。只有在时间对象具有ISO年表,或者可以转换为LocalDate时才允许提取。

      此方法与函数接口TemporalQuery的签名匹配,允许通过方法引用YearMonth::from来使用它作为查询。

      参数:
      temporal - 要转换的时间对象,非空
      返回:
      年月,非空
      抛出:
      DateTimeException - 如果无法转换为YearMonth
    • parse

      public static YearMonth parse(CharSequence text)
      从文本字符串(例如2007-12)获取YearMonth的实例。

      字符串必须表示有效的年月。格式必须为uuuu-MM。超出0000到9999范围的年份必须以加号或减号符号为前缀。

      参数:
      text - 要解析的文本,例如"2007-12",非空
      返回:
      解析后的年月,非空
      抛出:
      DateTimeParseException - 如果无法解析文本
    • parse

      public static YearMonth parse(CharSequence text, DateTimeFormatter formatter)
      使用特定格式化程序从文本字符串获取YearMonth的实例。

      使用格式化程序解析文本,返回一个年月。

      参数:
      text - 要解析的文本,不能为空
      formatter - 要使用的格式化程序,不能为空
      返回:
      解析后的年月,不能为空
      抛出:
      DateTimeParseException - 如果无法解析文本
    • isSupported

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

      这将检查此年月是否可以查询指定字段。如果为false,则调用rangegetwith(TemporalField, long)方法将抛出异常。

      如果字段是ChronoField,则在此处实现查询。支持的字段包括:

      • MONTH_OF_YEAR
      • PROLEPTIC_MONTH
      • YEAR_OF_ERA
      • YEAR
      • ERA
      所有其他ChronoField实例将返回false。

      如果字段不是ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)方法获取此方法的结果,传递this作为参数。字段是否受支持由字段确定。

      指定者:
      isSupported 在接口 TemporalAccessor
      参数:
      field - 要检查的字段,null返回false
      返回:
      如果此年月支持该字段,则为true,否则为false
    • isSupported

      public boolean isSupported(TemporalUnit unit)
      检查是否支持指定的单位。

      这将检查指定单位是否可以添加到此年月或从中减去。如果为false,则调用plus(long, TemporalUnit)minus方法将抛出异常。

      如果单位是ChronoUnit,则在此处实现查询。支持的单位包括:

      • MONTHS
      • YEARS
      • DECADES
      • CENTURIES
      • MILLENNIA
      • ERAS
      所有其他ChronoUnit实例将返回false。

      如果单位不是ChronoUnit,则通过调用TemporalUnit.isSupportedBy(Temporal)方法获取此方法的结果,传递this作为参数。单位是否受支持由单位确定。

      指定者:
      isSupported 在接口 Temporal
      参数:
      unit - 要检查的单位,null返回false
      返回:
      如果可以添加/减去该单位,则为true,否则为false
    • range

      public ValueRange range(TemporalField field)
      获取指定字段的有效值范围。

      范围对象表示字段的最小和最大有效值。此年月用于增强返回范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是ChronoField,则在此处实现查询。支持的字段将返回适当的范围实例。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)方法获取此方法的结果,传递this作为参数。是否可以获取范围由字段确定。

      指定者:
      range 在接口 TemporalAccessor
      参数:
      field - 要查询范围的字段,不能为空
      返回:
      该字段的有效值范围,不能为空
      抛出:
      DateTimeException - 如果无法获取字段的范围
      UnsupportedTemporalTypeException - 如果不支持该字段
    • get

      public int get(TemporalField field)
      从此年月获取指定字段的值作为int

      查询此年月以获取指定字段的值。返回的值将始终在字段的有效值范围内。如果无法返回值,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是ChronoField,则在此处实现查询。支持的字段将根据此年月返回有效值,除了PROLEPTIC_MONTH,因为它太大而无法适应int,会抛出DateTimeException。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)方法获取此方法的结果,传递this作为参数。值是否可以获取以及值代表什么由字段确定。

      指定者:
      get 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回:
      该字段的值
      抛出:
      DateTimeException - 如果无法获取字段的值或值超出字段的有效值范围
      UnsupportedTemporalTypeException - 如果不支持该字段或值范围超过int
      ArithmeticException - 如果发生数值溢出
    • getLong

      public long getLong(TemporalField field)
      从此年月获取指定字段的值作为long

      查询此年月以获取指定字段的值。如果无法返回值,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是ChronoField,则在此处实现查询。支持的字段将根据此年月返回有效值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)方法获取此方法的结果,传递this作为参数。值是否可以获取以及值代表什么由字段确定。

      指定者:
      getLong 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回:
      该字段的值
      抛出:
      DateTimeException - 如果无法获取字段的值
      UnsupportedTemporalTypeException - 如果不支持该字段
      ArithmeticException - 如果发生数值溢出
    • getYear

      public int getYear()
      获取年份字段。

      此方法返回年份的原始int值。

      此方法返回的年份是根据get(YEAR)的规则。

      返回:
      年份,从MIN_YEAR到MAX_YEAR
    • getMonthValue

      public int getMonthValue()
      获取月份字段,从1到12。

      此方法将月份作为从1到12的int返回。通过调用getMonth(),应用代码通常更清晰。

      返回:
      月份,从1到12
      参见:
    • getMonth

      public Month getMonth()
      使用Month枚举获取月份字段。

      此方法返回月份的Month枚举。这样可以避免对int值的含义产生混淆。如果需要访问原始int值,则枚举提供了int value

      返回:
      月份,不能为空
      参见:
    • isLeapYear

      public boolean isLeapYear()
      检查年份是否符合ISO历法系统规则中的闰年。

      此方法适用于整个时间线上的闰年规则。一般来说,如果年份能被4整除,则是闰年。然而,能被100整除的年份不是闰年,但能被400整除的年份是闰年。

      例如,1904年是闰年,因为能被4整除。1900年不是闰年,因为能被100整除,但2000年是闰年,因为能被400整除。

      计算是推测性的 - 将相同的规则应用到遥远的未来和过去。这在历史上是不准确的,但对于ISO-8601标准是正确的。

      返回值:
      如果年份是闰年则返回true,否则返回false
    • isValidDay

      public boolean isValidDay(int dayOfMonth)
      检查该年月的日期是否有效。

      此方法检查此年份和月份以及输入的日期是否形成有效日期。

      参数:
      dayOfMonth - 要验证的日期,从1到31,无效值返回false
      返回值:
      如果该日期对于该年月有效则返回true
    • lengthOfMonth

      public int lengthOfMonth()
      返回考虑年份的月份长度。

      返回该月份的天数长度。例如,一月份的日期将返回31。

      返回值:
      该月份的天数长度,从28到31
    • lengthOfYear

      public int lengthOfYear()
      返回年份的长度。

      返回年份的天数长度,为365或366。

      返回值:
      如果年份是闰年则返回366,否则返回365
    • with

      public YearMonth with(TemporalAdjuster adjuster)
      返回此年月的调整副本。

      返回一个基于此年月的YearMonth,并进行调整。调整是使用指定的调整策略对象进行的。阅读调整器的文档以了解将进行何种调整。

      一个简单的调整器可能只是设置其中一个字段,例如年份字段。一个更复杂的调整器可能将年月设置为哈雷彗星下次经过地球的下个月。

      此方法的结果是通过在指定的调整器上调用TemporalAdjuster.adjustInto(Temporal)方法并传递this作为参数来获得的。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      with 在接口 Temporal
      参数:
      adjuster - 要使用的调整器,不能为空
      返回值:
      基于this进行调整后的YearMonth,不能为空
      抛出:
      DateTimeException - 如果无法进行调整
      ArithmeticException - 如果发生数值溢出
    • with

      public YearMonth with(TemporalField field, long newValue)
      返回将指定字段设置为新值后的此年月的副本。

      返回一个基于此年月的YearMonth,并更改指定字段的值。这可用于更改任何支持的字段,例如年份或月份。如果无法设置值,因为不支持该字段或出于其他原因,则会抛出异常。

      如果字段是一个ChronoField,则在此处实现调整。支持的字段行为如下:

      • MONTH_OF_YEAR - 返回具有指定月份的YearMonth。年份将保持不变。
      • PROLEPTIC_MONTH - 返回具有指定推测月份的YearMonth。这完全替换了此对象的年份和月份。
      • YEAR_OF_ERA - 返回具有指定年份的YearMonth。月份和纪元将保持不变。
      • YEAR - 返回具有指定年份的YearMonth。月份将保持不变。
      • ERA - 返回具有指定纪元的YearMonth。月份和年份纪元将保持不变。

      在所有情况下,如果新值超出字段的有效值范围,则将抛出DateTimeException

      所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.adjustInto(Temporal, long)并将this作为参数来获得此方法的结果。在这种情况下,字段确定是否以及如何调整时刻。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      with 在接口 Temporal
      参数:
      field - 要在结果中设置的字段,不能为空
      newValue - 结果中字段的新值
      返回值:
      基于this进行设置指定字段后的YearMonth,不能为空
      抛出:
      DateTimeException - 如果无法设置字段
      UnsupportedTemporalTypeException - 如果不支持该字段
      ArithmeticException - 如果发生数值溢出
    • withYear

      public YearMonth withYear(int year)
      返回将年份更改后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      year - 要在返回的年月中设置的年份,从MIN_YEAR到MAX_YEAR
      返回值:
      基于此年月的YearMonth,并具有请求的年份,不能为空
      抛出:
      DateTimeException - 如果年份值无效
    • withMonth

      public YearMonth withMonth(int month)
      返回将月份更改后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      month - 要在返回的年月中设置的月份,从1(一月)到12(十二月)
      返回值:
      基于此年月的YearMonth,并具有请求的月份,不能为空
      抛出:
      DateTimeException - 如果月份值无效
    • plus

      public YearMonth plus(TemporalAmount amountToAdd)
      返回将指定数量添加后的此年月的副本。

      返回一个基于此年月的YearMonth,并添加指定数量。该数量通常是Period,但可以是实现TemporalAmount接口的任何其他类型。

      通过调用TemporalAmount.addTo(Temporal)将计算委托给数量对象。数量的实现可以以任何希望的方式实现添加,但通常会回调plus(long, TemporalUnit)。请查阅数量实现的文档,以确定是否可以成功添加。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      plus 在接口 Temporal
      参数:
      amountToAdd - 要添加的数量,不能为空
      返回值:
      基于此年月进行添加后的YearMonth,不能为空
      抛出:
      DateTimeException - 如果无法进行添加
      ArithmeticException - 如果发生数值溢出
    • plus

      public YearMonth plus(long amountToAdd, TemporalUnit unit)
      返回添加指定数量后的年月的副本。

      返回一个基于此年月的YearMonth,其中包含以单位为单位的数量。如果无法添加数量,因为不支持该单位或其他原因,将抛出异常。

      如果字段是ChronoUnit,则在此处实现添加。支持的字段行为如下:

      • MONTHS - 返回添加指定月数的YearMonth。这等同于plusMonths(long)
      • YEARS - 返回添加指定年数的YearMonth。这等同于plusYears(long)
      • DECADES - 返回添加指定十年数的YearMonth。这等同于调用plusYears(long)并将数量乘以10。
      • CENTURIES - 返回添加指定世纪数的YearMonth。这等同于调用plusYears(long)并将数量乘以100。
      • MILLENNIA - 返回添加指定千年数的YearMonth。这等同于调用plusYears(long)并将数量乘以1,000。
      • ERAS - 返回添加指定纪元数的YearMonth。仅支持两个纪元,因此数量必须为一、零或负一。如果数量非零,则更改年份,使得纪元年份不变。

      所有其他ChronoUnit实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoUnit,则通过调用TemporalUnit.addTo(Temporal, long)并将this作为参数来获取此方法的结果。在这种情况下,单位确定是否以及如何执行添加。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      plus 在接口 Temporal
      参数:
      amountToAdd - 要添加到结果的单位数量,可以为负数
      unit - 要添加的数量的单位,不能为空
      返回:
      基于此年月的YearMonth,添加了指定数量,不能为空
      抛出:
      DateTimeException - 如果无法进行添加
      UnsupportedTemporalTypeException - 如果不支持该单位
      ArithmeticException - 如果发生数值溢出
    • plusYears

      public YearMonth plusYears(long yearsToAdd)
      返回添加指定年数后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      yearsToAdd - 要添加的年数,可以为负数
      返回:
      基于此年月的YearMonth,添加了年份,不能为空
      抛出:
      DateTimeException - 如果结果超出支持范围
    • plusMonths

      public YearMonth plusMonths(long monthsToAdd)
      返回添加指定月数后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      monthsToAdd - 要添加的月数,可以为负数
      返回:
      基于此年月的YearMonth,添加了月份,不能为空
      抛出:
      DateTimeException - 如果结果超出支持范围
    • minus

      public YearMonth minus(TemporalAmount amountToSubtract)
      返回减去指定数量后的年月的副本。

      返回一个基于此年月的YearMonth,其中包含指定数量的减法。数量通常是Period,但也可以是实现TemporalAmount接口的任何其他类型。

      通过调用TemporalAmount.subtractFrom(Temporal)将计算委托给数量对象。数量实现可以以任何希望的方式实现减法,但通常会回调minus(long, TemporalUnit)。请查阅数量实现的文档,以确定是否可以成功减去。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      minus 在接口 Temporal
      参数:
      amountToSubtract - 要减去的数量,不能为空
      返回:
      基于此年月的YearMonth,进行了减法,不能为空
      抛出:
      DateTimeException - 如果无法进行减法
      ArithmeticException - 如果发生数值溢出
    • minus

      public YearMonth minus(long amountToSubtract, TemporalUnit unit)
      返回减去指定数量后的年月的副本。

      返回一个基于此年月的YearMonth,其中包含以单位为单位的数量的减法。如果无法减去数量,因为不支持该单位或其他原因,将抛出异常。

      此方法等同于plus(long, TemporalUnit),其中数量为负数。查看该方法以获取有关如何进行加法和减法的完整描述。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      minus 在接口 Temporal
      参数:
      amountToSubtract - 要从结果中减去的单位数量,可以为负数
      unit - 要减去的数量的单位,不能为空
      返回:
      基于此年月的YearMonth,减去了指定数量,不能为空
      抛出:
      DateTimeException - 如果无法进行减法
      UnsupportedTemporalTypeException - 如果不支持该单位
      ArithmeticException - 如果发生数值溢出
    • minusYears

      public YearMonth minusYears(long yearsToSubtract)
      返回减去指定年数后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      yearsToSubtract - 要减去的年数,可以为负数
      返回:
      基于此年月的YearMonth,减去了年份,不能为空
      抛出:
      DateTimeException - 如果结果超出支持范围
    • minusMonths

      public YearMonth minusMonths(long monthsToSubtract)
      返回减去指定月数后的此YearMonth的副本。

      此实例是不可变的,不受此方法调用的影响。

      参数:
      monthsToSubtract - 要减去的月数,可以为负数
      返回:
      基于此年月的YearMonth,减去了月份,不能为空
      抛出:
      DateTimeException - 如果结果超出支持范围
    • query

      public <R> R query(TemporalQuery<R> query)
      使用指定查询查询此年月。

      使用指定的查询策略对象查询此年月。 TemporalQuery对象定义要用于获取结果的逻辑。阅读查询的文档以了解此方法的结果将是什么。

      通过调用指定查询的TemporalQuery.queryFrom(TemporalAccessor)方法获取此方法的结果,传递this作为参数。

      指定者:
      query 在接口 TemporalAccessor
      类型参数:
      R - 结果的类型
      参数:
      query - 要调用的查询,不能为空
      返回:
      查询结果,可以返回null(由查询定义)
      抛出:
      DateTimeException - 如果无法查询(由查询定义)
      ArithmeticException - 如果发生数值溢出(由查询定义)
    • adjustInto

      public Temporal adjustInto(Temporal temporal)
      调整指定的时间对象以具有此年月。

      返回一个与输入具有相同可观察类型的时间对象,其中年份和月份更改为与此相同。

      该调整等同于使用Temporal.with(TemporalField, long),将ChronoField.PROLEPTIC_MONTH作为字段传递。如果指定的时间对象不使用ISO日历系统,则会抛出DateTimeException

      在大多数情况下,通过使用Temporal.with(TemporalAdjuster)来反转调用模式更清晰:

         // 这两行是等效的,但推荐第二种方法
         temporal = thisYearMonth.adjustInto(temporal);
         temporal = temporal.with(thisYearMonth);
       

      此实例是不可变的,并且不受此方法调用的影响。

      指定者:
      adjustInto 在接口 TemporalAdjuster
      参数:
      temporal - 要调整的目标对象,不能为空
      返回:
      调整后的对象,不能为空
      抛出:
      DateTimeException - 如果无法进行调整
      ArithmeticException - 如果发生数值溢出
    • until

      public long until(Temporal endExclusive, TemporalUnit unit)
      根据指定的单位计算到另一个年月的时间量。

      这将根据单个TemporalUnit计算两个YearMonth对象之间的时间量。起始点和结束点是this和指定的年月。如果结束在开始之前,则结果将为负数。传递给此方法的Temporal将使用from(TemporalAccessor)转换为YearMonth。例如,可以使用startYearMonth.until(endYearMonth, YEARS)来计算两个年月之间的年数。

      计算返回一个整数,表示两个年月之间完整单位的数量。例如,2012-06和2032-05之间的十年数将仅为一个十年,因为它比两个十年短一个月。

      使用此方法有两种等效的方式。第一种是调用此方法。第二种是使用TemporalUnit.between(Temporal, Temporal)

         // 这两行是等效的
         amount = start.until(end, MONTHS);
         amount = MONTHS.between(start, end);
       
      应根据哪种方式使代码更易读来进行选择。

      此方法中实现了对ChronoUnit的计算。支持单位MONTHSYEARSDECADESCENTURIESMILLENNIAERAS。其他ChronoUnit值将抛出异常。

      如果单位不是ChronoUnit,则通过调用TemporalUnit.between(Temporal, Temporal)传递this作为第一个参数和转换后的输入时间作为第二个参数来获得此方法的结果。

      此实例是不可变的,并且不受此方法调用的影响。

      指定者:
      until 在接口 Temporal
      参数:
      endExclusive - 结束日期(不包括),将其转换为YearMonth,不能为空
      unit - 用于测量时间量的单位,不能为空
      返回:
      此年月与结束年月之间的时间量
      抛出:
      DateTimeException - 如果无法计算时间量,或者无法将结束时间转换为YearMonth
      UnsupportedTemporalTypeException - 如果不支持该单位
      ArithmeticException - 如果发生数值溢出
    • format

      public String format(DateTimeFormatter formatter)
      使用指定的格式化程序格式化此年月。

      将此年月传递给格式化程序以生成一个字符串。

      参数:
      formatter - 要使用的格式化程序,不能为空
      返回:
      格式化后的年月字符串,不能为空
      抛出:
      DateTimeException - 在打印过程中发生错误
    • atDay

      public LocalDate atDay(int dayOfMonth)
      将此年月与一个月中的某一天组合以创建一个LocalDate

      返回从此年月和指定的日期形成的LocalDate

      日期值必须对该年月有效。

      此方法可用作链的一部分来生成日期:

        LocalDate date = year.atMonth(month).atDay(day);
       
      参数:
      dayOfMonth - 要使用的日期,从1到31
      返回:
      从此年月和指定日期形成的日期,不能为空
      抛出:
      DateTimeException - 如果日期对于该年月无效
      参见:
    • atEndOfMonth

      public LocalDate atEndOfMonth()
      返回月末的LocalDate

      基于此年月返回一个基于LocalDate。日期设置为该月的最后一个有效日期,考虑闰年。

      此方法可用作链的一部分来生成日期:

        LocalDate date = year.atMonth(month).atEndOfMonth();
       
      返回:
      此年月的最后一个有效日期,不能为空
    • compareTo

      public int compareTo(YearMonth other)
      将此年月与另一个年月进行比较。

      比较首先基于年份的值,然后基于月份的值。它是“与equals一致”的,如Comparable所定义。

      指定者:
      compareTo 在接口 Comparable<YearMonth>
      参数:
      other - 要比较的另一个年月,不能为空
      返回:
      比较器值,如果此在other之前,则小于零,如果它们相等,则为零,如果此在other之后,则大于零
      参见:
    • isAfter

      public boolean isAfter(YearMonth other)
      检查此年月是否在指定的年月之后。
      参数:
      other - 要比较的另一个年月,不能为空
      返回:
      如果此在指定的年月之后,则为true
    • isBefore

      public boolean isBefore(YearMonth other)
      检查此年月是否在指定的年月之前。
      参数:
      other - 要比较的另一个年月,不能为空
      返回:
      如果此时间点在指定的年月之前,则为true
    • equals

      public boolean equals(Object obj)
      检查此年月是否等于另一个年月。

      比较基于年月的时间线位置。

      覆盖:
      equals 在类 Object
      参数:
      obj - 要检查的对象,null返回false
      返回:
      如果此等于另一个年月,则为true
      参见:
    • hashCode

      public int hashCode()
      此年月的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      适当的哈希码
      参见:
    • toString

      public String toString()
      将此年月输出为String,例如2007-12

      输出将以uuuu-MM的格式:

      覆盖:
      toString 在类 Object
      返回:
      此年月的字符串表示,不能为空