- 所有已实现的接口:
-
Serializable
,Comparable<YearMonth>
,Temporal
,TemporalAccessor
,TemporalAdjuster
2007-12
。
YearMonth
是一个不可变的日期时间对象,表示年和月的组合。可以获取从年和月派生的任何字段,例如季度。
此类不存储或表示日期、时间或时区。例如,值"2007年10月"可以存储在YearMonth
中。
ISO-8601日历系统是当今世界大部分地区使用的现代公历系统。它等同于先验的格里高利历日历系统,其中适用于所有时间的闰年规则。对于今天编写的大多数应用程序,ISO-8601规则完全适用。但是,任何使用历史日期并要求其准确的应用程序将发现ISO-8601方法不适用。
这是一个基于值的类;程序员应该将相等的实例视为可互换的,不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。应该使用equals
方法进行比较。
- 实现要求:
- 此类是不可变的且线程安全的。
- 自版本:
- 1.8
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionadjustInto
(Temporal temporal) 调整指定的时间对象以具有此年月。atDay
(int dayOfMonth) 将此年月与一个月中的某一天组合以创建一个LocalDate
。返回当月的最后一天的LocalDate
。int
将此年月与另一个年月进行比较。boolean
检查此年月是否等于另一个年月。format
(DateTimeFormatter formatter) 使用指定的格式化程序格式化此年月。static YearMonth
from
(TemporalAccessor temporal) 从时间对象获取YearMonth
的实例。int
get
(TemporalField field) 从此年月中获取指定字段的值作为int
。long
getLong
(TemporalField field) 从此年月中获取指定字段的值作为long
。getMonth()
使用Month
枚举获取年份中的月份字段。int
获取年份中的月份字段,范围从1到12。int
getYear()
获取年份字段。int
hashCode()
此年月的哈希码。boolean
检查此年月是否在指定的年月之后。boolean
检查此年月是否在指定的年月之前。boolean
根据ISO先验日历系统规则检查年份是否为闰年。boolean
isSupported
(TemporalField field) 检查是否支持指定字段。boolean
isSupported
(TemporalUnit unit) 检查是否支持指定单位。boolean
isValidDay
(int dayOfMonth) 检查月中的日期对于此年月是否有效。int
返回月份的长度,考虑年份。int
返回年份的长度。minus
(long amountToSubtract, TemporalUnit unit) 返回减去指定数量后的此年月的副本。minus
(TemporalAmount amountToSubtract) 返回减去指定数量后的此年月的副本。minusMonths
(long monthsToSubtract) 返回减去指定月份数后的此YearMonth
的副本。minusYears
(long yearsToSubtract) 返回减去指定年数后的此YearMonth
的副本。static YearMonth
now()
从默认时区的系统时钟获取当前年月。static YearMonth
从指定时钟获取当前年月。static YearMonth
从指定时区的系统时钟获取当前年月。static YearMonth
of
(int year, int month) 从年和月获取YearMonth
的实例。static YearMonth
从年和月获取YearMonth
的实例。static YearMonth
parse
(CharSequence text) 从文本字符串(例如2007-12
)获取YearMonth
的实例。static YearMonth
parse
(CharSequence text, DateTimeFormatter formatter) 使用特定格式化程序从文本字符串获取YearMonth
的实例。plus
(long amountToAdd, TemporalUnit unit) 返回添加指定数量后的此年月的副本。plus
(TemporalAmount amountToAdd) 返回添加指定数量后的此年月的副本。plusMonths
(long monthsToAdd) 返回添加指定月份数后的此YearMonth
的副本。plusYears
(long yearsToAdd) 返回添加指定年数后的此YearMonth
的副本。<R> R
query
(TemporalQuery<R> query) 使用指定查询查询此年月。range
(TemporalField field) 获取指定字段的有效值范围。toString()
将此年月输出为String
,例如2007-12
。long
until
(Temporal endExclusive, TemporalUnit unit) 计算到另一个年月的时间量,以指定单位表示。with
(TemporalAdjuster adjuster) 返回调整后的此年月的副本。with
(TemporalField field, long newValue) 将指定字段设置为新值后返回此年月的副本。withMonth
(int month) 将年份中的月份字段更改后返回此YearMonth
的副本。withYear
(int year) 将年份更改后返回此YearMonth
的副本。
-
Method Details
-
now
从默认时区的系统时钟获取当前年月。这将查询默认时区中的
系统时钟
以获取当前年月。使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。
- 返回:
- 使用系统时钟和默认时区的当前年月,非空
-
now
从指定时区的系统时钟获取当前年月。这将查询
系统时钟
以获取当前年月。指定时区避免依赖默认时区。使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。
- 参数:
-
zone
- 要使用的区域ID,非空 - 返回:
- 使用系统时钟的当前年月,非空
-
now
从指定时钟获取当前年月。这将查询指定的时钟以获取当前年月。使用此方法允许在测试中使用替代时钟。可以使用
依赖注入
引入替代时钟。- 参数:
-
clock
- 要使用的时钟,非空 - 返回:
- 当前年月,非空
-
of
从年和月获取YearMonth
的实例。- 参数:
-
year
- 要表示的年份,从MIN_YEAR到MAX_YEAR -
month
- 要表示的年份中的月份,非空 - 返回:
- 年月,非空
- 抛出:
-
DateTimeException
- 如果年份值无效
-
of
从年和月获取YearMonth
的实例。- 参数:
-
year
- 要表示的年份,从MIN_YEAR到MAX_YEAR -
month
- 要表示的年份中的月份,从1(一月)到12(十二月) - 返回:
- 年月,非空
- 抛出:
-
DateTimeException
- 如果任一字段值无效
-
from
从时间对象获取YearMonth
的实例。根据指定的时间对象获取一个年月。
TemporalAccessor
表示一组任意的日期和时间信息,此工厂将其转换为YearMonth
的实例。转换提取
YEAR
和MONTH_OF_YEAR
字段。只有在时间对象具有ISO年表,或者可以转换为LocalDate
时才允许提取。此方法与函数接口
TemporalQuery
的签名匹配,允许通过方法引用YearMonth::from
来使用它作为查询。- 参数:
-
temporal
- 要转换的时间对象,非空 - 返回:
- 年月,非空
- 抛出:
-
DateTimeException
- 如果无法转换为YearMonth
-
parse
从文本字符串(例如2007-12
)获取YearMonth
的实例。字符串必须表示有效的年月。格式必须为
uuuu-MM
。超出0000到9999范围的年份必须以加号或减号符号为前缀。- 参数:
-
text
- 要解析的文本,例如"2007-12",非空 - 返回:
- 解析后的年月,非空
- 抛出:
-
DateTimeParseException
- 如果无法解析文本
-
parse
使用特定格式化程序从文本字符串获取YearMonth
的实例。使用格式化程序解析文本,返回一个年月。
- 参数:
-
text
- 要解析的文本,不能为空 -
formatter
- 要使用的格式化程序,不能为空 - 返回:
- 解析后的年月,不能为空
- 抛出:
-
DateTimeParseException
- 如果无法解析文本
-
isSupported
检查是否支持指定的字段。这将检查此年月是否可以查询指定字段。如果为false,则调用
range
、get
和with(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
检查是否支持指定的单位。这将检查指定单位是否可以添加到此年月或从中减去。如果为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
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。此年月用于增强返回范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。
如果字段是
ChronoField
,则在此处实现查询。支持的字段
将返回适当的范围实例。所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果字段不是
ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
方法获取此方法的结果,传递this
作为参数。是否可以获取范围由字段确定。- 指定者:
-
range
在接口TemporalAccessor
- 参数:
-
field
- 要查询范围的字段,不能为空 - 返回:
- 该字段的有效值范围,不能为空
- 抛出:
-
DateTimeException
- 如果无法获取字段的范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段
-
get
从此年月获取指定字段的值作为int
。查询此年月以获取指定字段的值。返回的值将始终在字段的有效值范围内。如果无法返回值,因为不支持该字段或出于其他原因,将抛出异常。
如果字段是
ChronoField
,则在此处实现查询。支持的字段
将根据此年月返回有效值,除了PROLEPTIC_MONTH
,因为它太大而无法适应int
,会抛出DateTimeException
。所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果字段不是
ChronoField
,则通过调用TemporalField.getFrom(TemporalAccessor)
方法获取此方法的结果,传递this
作为参数。值是否可以获取以及值代表什么由字段确定。- 指定者:
-
get
在接口TemporalAccessor
- 参数:
-
field
- 要获取的字段,不能为空 - 返回:
- 该字段的值
- 抛出:
-
DateTimeException
- 如果无法获取字段的值或值超出字段的有效值范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段或值范围超过int
-
ArithmeticException
- 如果发生数值溢出
-
getLong
从此年月获取指定字段的值作为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
使用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
返回此年月的调整副本。返回一个基于此年月的
YearMonth
,并进行调整。调整是使用指定的调整策略对象进行的。阅读调整器的文档以了解将进行何种调整。一个简单的调整器可能只是设置其中一个字段,例如年份字段。一个更复杂的调整器可能将年月设置为哈雷彗星下次经过地球的下个月。
此方法的结果是通过在指定的调整器上调用
TemporalAdjuster.adjustInto(Temporal)
方法并传递this
作为参数来获得的。此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
with
在接口Temporal
中 - 参数:
-
adjuster
- 要使用的调整器,不能为空 - 返回值:
-
基于
this
进行调整后的YearMonth
,不能为空 - 抛出:
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数值溢出
-
with
返回将指定字段设置为新值后的此年月的副本。返回一个基于此年月的
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
返回将年份更改后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
year
- 要在返回的年月中设置的年份,从MIN_YEAR到MAX_YEAR - 返回值:
-
基于此年月的
YearMonth
,并具有请求的年份,不能为空 - 抛出:
-
DateTimeException
- 如果年份值无效
-
withMonth
返回将月份更改后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
month
- 要在返回的年月中设置的月份,从1(一月)到12(十二月) - 返回值:
-
基于此年月的
YearMonth
,并具有请求的月份,不能为空 - 抛出:
-
DateTimeException
- 如果月份值无效
-
plus
返回将指定数量添加后的此年月的副本。返回一个基于此年月的
YearMonth
,并添加指定数量。该数量通常是Period
,但可以是实现TemporalAmount
接口的任何其他类型。通过调用
TemporalAmount.addTo(Temporal)
将计算委托给数量对象。数量的实现可以以任何希望的方式实现添加,但通常会回调plus(long, TemporalUnit)
。请查阅数量实现的文档,以确定是否可以成功添加。此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
plus
在接口Temporal
中 - 参数:
-
amountToAdd
- 要添加的数量,不能为空 - 返回值:
-
基于此年月进行添加后的
YearMonth
,不能为空 - 抛出:
-
DateTimeException
- 如果无法进行添加 -
ArithmeticException
- 如果发生数值溢出
-
plus
返回添加指定数量后的年月的副本。返回一个基于此年月的
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
返回添加指定年数后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
yearsToAdd
- 要添加的年数,可以为负数 - 返回:
-
基于此年月的
YearMonth
,添加了年份,不能为空 - 抛出:
-
DateTimeException
- 如果结果超出支持范围
-
plusMonths
返回添加指定月数后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
monthsToAdd
- 要添加的月数,可以为负数 - 返回:
-
基于此年月的
YearMonth
,添加了月份,不能为空 - 抛出:
-
DateTimeException
- 如果结果超出支持范围
-
minus
返回减去指定数量后的年月的副本。返回一个基于此年月的
YearMonth
,其中包含指定数量的减法。数量通常是Period
,但也可以是实现TemporalAmount
接口的任何其他类型。通过调用
TemporalAmount.subtractFrom(Temporal)
将计算委托给数量对象。数量实现可以以任何希望的方式实现减法,但通常会回调minus(long, TemporalUnit)
。请查阅数量实现的文档,以确定是否可以成功减去。此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
minus
在接口Temporal
- 参数:
-
amountToSubtract
- 要减去的数量,不能为空 - 返回:
-
基于此年月的
YearMonth
,进行了减法,不能为空 - 抛出:
-
DateTimeException
- 如果无法进行减法 -
ArithmeticException
- 如果发生数值溢出
-
minus
返回减去指定数量后的年月的副本。返回一个基于此年月的
YearMonth
,其中包含以单位为单位的数量的减法。如果无法减去数量,因为不支持该单位或其他原因,将抛出异常。此方法等同于
plus(long, TemporalUnit)
,其中数量为负数。查看该方法以获取有关如何进行加法和减法的完整描述。此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
minus
在接口Temporal
- 参数:
-
amountToSubtract
- 要从结果中减去的单位数量,可以为负数 -
unit
- 要减去的数量的单位,不能为空 - 返回:
-
基于此年月的
YearMonth
,减去了指定数量,不能为空 - 抛出:
-
DateTimeException
- 如果无法进行减法 -
UnsupportedTemporalTypeException
- 如果不支持该单位 -
ArithmeticException
- 如果发生数值溢出
-
minusYears
返回减去指定年数后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
yearsToSubtract
- 要减去的年数,可以为负数 - 返回:
-
基于此年月的
YearMonth
,减去了年份,不能为空 - 抛出:
-
DateTimeException
- 如果结果超出支持范围
-
minusMonths
返回减去指定月数后的此YearMonth
的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
monthsToSubtract
- 要减去的月数,可以为负数 - 返回:
-
基于此年月的
YearMonth
,减去了月份,不能为空 - 抛出:
-
DateTimeException
- 如果结果超出支持范围
-
query
使用指定查询查询此年月。使用指定的查询策略对象查询此年月。
TemporalQuery
对象定义要用于获取结果的逻辑。阅读查询的文档以了解此方法的结果将是什么。通过调用指定查询的
TemporalQuery.queryFrom(TemporalAccessor)
方法获取此方法的结果,传递this
作为参数。- 指定者:
-
query
在接口TemporalAccessor
- 类型参数:
-
R
- 结果的类型 - 参数:
-
query
- 要调用的查询,不能为空 - 返回:
- 查询结果,可以返回null(由查询定义)
- 抛出:
-
DateTimeException
- 如果无法查询(由查询定义) -
ArithmeticException
- 如果发生数值溢出(由查询定义)
-
adjustInto
调整指定的时间对象以具有此年月。返回一个与输入具有相同可观察类型的时间对象,其中年份和月份更改为与此相同。
该调整等同于使用
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
根据指定的单位计算到另一个年月的时间量。这将根据单个
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
的计算。支持单位MONTHS
、YEARS
、DECADES
、CENTURIES
、MILLENNIA
和ERAS
。其他ChronoUnit
值将抛出异常。如果单位不是
ChronoUnit
,则通过调用TemporalUnit.between(Temporal, Temporal)
传递this
作为第一个参数和转换后的输入时间作为第二个参数来获得此方法的结果。此实例是不可变的,并且不受此方法调用的影响。
- 指定者:
-
until
在接口Temporal
- 参数:
-
endExclusive
- 结束日期(不包括),将其转换为YearMonth
,不能为空 -
unit
- 用于测量时间量的单位,不能为空 - 返回:
- 此年月与结束年月之间的时间量
- 抛出:
-
DateTimeException
- 如果无法计算时间量,或者无法将结束时间转换为YearMonth
-
UnsupportedTemporalTypeException
- 如果不支持该单位 -
ArithmeticException
- 如果发生数值溢出
-
format
使用指定的格式化程序格式化此年月。将此年月传递给格式化程序以生成一个字符串。
- 参数:
-
formatter
- 要使用的格式化程序,不能为空 - 返回:
- 格式化后的年月字符串,不能为空
- 抛出:
-
DateTimeException
- 在打印过程中发生错误
-
atDay
将此年月与一个月中的某一天组合以创建一个LocalDate
。返回从此年月和指定的日期形成的
LocalDate
。日期值必须对该年月有效。
此方法可用作链的一部分来生成日期:
LocalDate date = year.atMonth(month).atDay(day);
- 参数:
-
dayOfMonth
- 要使用的日期,从1到31 - 返回:
- 从此年月和指定日期形成的日期,不能为空
- 抛出:
-
DateTimeException
- 如果日期对于该年月无效 - 参见:
-
atEndOfMonth
返回月末的LocalDate
。基于此年月返回一个基于
LocalDate
。日期设置为该月的最后一个有效日期,考虑闰年。此方法可用作链的一部分来生成日期:
LocalDate date = year.atMonth(month).atEndOfMonth();
- 返回:
- 此年月的最后一个有效日期,不能为空
-
compareTo
将此年月与另一个年月进行比较。比较首先基于年份的值,然后基于月份的值。它是“与equals一致”的,如
Comparable
所定义。- 指定者:
-
compareTo
在接口Comparable<YearMonth>
- 参数:
-
other
- 要比较的另一个年月,不能为空 - 返回:
-
比较器值,如果此在
other
之前,则小于零,如果它们相等,则为零,如果此在other
之后,则大于零 - 参见:
-
isAfter
检查此年月是否在指定的年月之后。- 参数:
-
other
- 要比较的另一个年月,不能为空 - 返回:
- 如果此在指定的年月之后,则为true
-
isBefore
检查此年月是否在指定的年月之前。- 参数:
-
other
- 要比较的另一个年月,不能为空 - 返回:
- 如果此时间点在指定的年月之前,则为true
-
equals
检查此年月是否等于另一个年月。比较基于年月的时间线位置。
-
hashCode
public int hashCode()此年月的哈希码。 -
toString
将此年月输出为String
,例如2007-12
。输出将以
uuuu-MM
的格式:
-