public final class MonthDay extends Object implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable
--12-03
。
MonthDay
是不变的日期时间对象,代表一年和月的结合。任何一个可以从一个月或一天,如一年四分之一,可以得到的字段。
这个类不存储或表示一年、时间或时区。例如,“12月3日”的值可以被存储在一个MonthDay
。
由于MonthDay
不具备一年,2月29日的飞跃的一天被认为是有效的。
这个类实现了TemporalAccessor
而不是Temporal
。这是因为它是不可能的,以确定是否2月29日是有效的或没有外部信息,防止实施加/减。与此相关,MonthDay
仅提供查询和设置字段MONTH_OF_YEAR
和DAY_OF_MONTH
。
该系统是现代民法ISO-8601日历日历系统中使用的大多数今天的世界。它相当于proleptic公历闰年的系统,在今天的规则适用于所有的时间。今天的大多数应用程序编写的,完全适合的ISO-8601规则。然而,任何应用程序,利用历史数据,并要求他们要准确找到ISO-8601方法不当。
这是一个value-based类;利用身份敏感的操作(包括引用相等(==
),身份的哈希代码,或同步)的实例MonthDay
可能有不可预知的结果应该是可以避免的。的equals
法进行比较。
Modifier and Type | Method and Description |
---|---|
Temporal |
adjustInto(Temporal temporal)
调整指定的时间对象有这个月天。
|
LocalDate |
atYear(int year)
结合本月日一年创造一个
LocalDate 。
|
int |
compareTo(MonthDay other)
把这个月天比较到另一个月天。
|
boolean |
equals(Object obj)
检查这个月的一天是否等于另一个月的一天。
|
String |
format(DateTimeFormatter formatter)
本月日格式使用指定的格式化程序。
|
static MonthDay |
from(TemporalAccessor temporal)
获得
MonthDay 实例从一个时空对象。
|
int |
get(TemporalField field)
从本月日获取指定字段的值作为一个
int 。
|
int |
getDayOfMonth()
获取月字段的一天。
|
long |
getLong(TemporalField field)
从本月日获取指定字段的值作为一个
long 。
|
Month |
getMonth()
得到月年田间使用
Month 枚举。
|
int |
getMonthValue()
从1到12得到一个月的时间字段。
|
int |
hashCode()
这个月天的一个哈希代码。
|
boolean |
isAfter(MonthDay other)
是这个月天之后指定的一个月天。
|
boolean |
isBefore(MonthDay other)
这是一个月前的一天。
|
boolean |
isSupported(TemporalField field)
检查指定字段是否被支持。
|
boolean |
isValidYear(int year)
检查一年是否有效期为这个月日。
|
static MonthDay |
now()
从默认时区中的系统时钟中获得当前的月日。
|
static MonthDay |
now(Clock clock)
从指定的时钟中获得当前的月日。
|
static MonthDay |
now(ZoneId zone)
从指定时区中的系统时钟中获得当前的月日。
|
static MonthDay |
of(int month, int dayOfMonth)
获得
MonthDay 实例。
|
static MonthDay |
of(Month month, int dayOfMonth)
获得
MonthDay 实例。
|
static MonthDay |
parse(CharSequence text)
获得
MonthDay 实例从一个文本字符串,如
--12-03 。
|
static MonthDay |
parse(CharSequence text, DateTimeFormatter formatter)
获得
MonthDay 实例从使用特定格式的文本字符串。
|
<R> R |
query(TemporalQuery<R> query)
使用指定的查询查询本月的一天。
|
ValueRange |
range(TemporalField field)
获取指定字段的有效值的范围。
|
String |
toString()
这个月的一天
String 输出,如
--12-03 。
|
MonthDay |
with(Month month)
返回一份本
MonthDay 与月的年变化。
|
MonthDay |
withDayOfMonth(int dayOfMonth)
返回一份本
MonthDay 与月改变的一天。
|
MonthDay |
withMonth(int month)
返回一份本
MonthDay 与月的年变化。
|
public static MonthDay now()
这将查询system clock
在默认时区获取当前月日。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
public static MonthDay now(ZoneId zone)
这将查询system clock
获取当前月日。指定时区避免依赖于默认时区。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
zone
-区ID使用,不为空
public static MonthDay now(Clock clock)
这将查询指定的时钟,以获得当前的月天。使用这种方法允许使用一个备用时钟进行测试。备用时钟可采用dependency injection
。
clock
-时钟使用,不为空
public static MonthDay of(Month month, int dayOfMonth)
MonthDay
实例。
月日必须在一个月内有效。因此,二月,29日是有效的。
例如,在四月和31天的传球将抛出一个例外,因为在任何一年都不会有4月31日。相比之下,在2月29日通过是被允许的,因为这一个月天有时是有效的。
month
-年月表示,不为空
dayOfMonth
-月代表天,从1到31
DateTimeException
-如果任何字段的值超出范围,或如果月天月是无效的
public static MonthDay of(int month, int dayOfMonth)
MonthDay
实例。
月日必须在一个月内有效。因此,2个月(二月),29日是有效的。
例如,在4个月(四月)和31天的传球将抛出一个例外,因为在任何一年都不会有4月31日。相比之下,在2月29日通过是被允许的,因为这一个月天有时是有效的。
month
-年月为代表,从1(一月)到12(十二月)
dayOfMonth
-月代表天,从1到31
DateTimeException
-如果任何字段的值超出范围,或如果月天月是无效的
public static MonthDay from(TemporalAccessor temporal)
MonthDay
实例从一个时空对象。
这将获得一个月天的基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以MonthDay
实例。
转换提取MONTH_OF_YEAR
和DAY_OF_MONTH
领域。提取只允许如果时空对象有一个ISO年表,或可以转换为一个LocalDate
。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询中的签名,MonthDay::from
。
temporal
-转换时间的对象,不为空
DateTimeException
如果无法转换为
MonthDay
public static MonthDay parse(CharSequence text)
MonthDay
实例从一个文本字符串,如
--12-03
。
字符串必须代表一个有效的月天。格式是--MM-dd
。
text
-解析如“文本——12-03”,不为空
DateTimeParseException
如果文本不能解析
public static MonthDay parse(CharSequence text, DateTimeFormatter formatter)
MonthDay
实例从使用特定格式的文本字符串。
文字使用格式化程序解析,返回一个月的日子。
text
-解析文本,不空
formatter
-格式化程序使用,不为空
DateTimeParseException
如果文本不能解析
public boolean isSupported(TemporalField field)
检查这个月天是否可以查询指定的字段。如果为false,则调用range
和get
方法将抛出一个异常。
如果该字段是ChronoField
然后查询执行。支持的字段是:
MONTH_OF_YEAR
YEAR
ChronoField
实例将返回false。
如果该字段是不是ChronoField
,然后通过调用作为参数传递this
TemporalField.isSupportedBy(TemporalAccessor)
得到此方法的结果。是否支持字段由字段确定。
isSupported
接口
TemporalAccessor
field
-现场检查null返回false
public ValueRange range(TemporalField field)
该范围对象表示字段的最小值和最大有效值。这个月天是用来提高返回范围的准确性。如果它是不可能返回的范围,因为字段不支持或其他一些原因,抛出一个异常。
如果该字段是ChronoField
然后查询执行。的supported fields
将返回适当的范围的情况下。所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是ChronoField
,然后通过调用作为参数传递this
TemporalField.rangeRefinedBy(TemporalAccessor)
得到此方法的结果。是否可以得到范围是由字段确定的。
range
接口
TemporalAccessor
field
-现场查询范围,不为空
DateTimeException
如果不能得到的领域范围
UnsupportedTemporalTypeException
如果字段不支持
public int get(TemporalField field)
int
这个查询这个月天为指定字段的值。返回的值将始终在字段的有效值范围内。如果不可能返回值,因为字段不支持或其他原因,则抛出异常。
如果该字段是ChronoField
然后查询执行。的supported fields
将基于本月日有效值。所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是ChronoField
,然后通过调用作为参数传递this
TemporalField.getFrom(TemporalAccessor)
得到此方法的结果。是否可以得到值,以及值表示的值,由字段确定。
get
接口
TemporalAccessor
field
-领域有,不空
DateTimeException
如果字段的值是不能获得或值不在字段的有效值范围内
UnsupportedTemporalTypeException
-如果字段不支持或值的范围超过一个
int
ArithmeticException
如果数值溢出时
public long getLong(TemporalField field)
long
这个查询这个月天为指定字段的值。如果不可能返回值,因为字段不支持或其他原因,则抛出异常。
如果该字段是ChronoField
然后查询执行。的supported fields
将基于本月日有效值。所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是ChronoField
,然后通过调用作为参数传递this
TemporalField.getFrom(TemporalAccessor)
得到此方法的结果。是否可以得到值,以及值表示的值,由字段确定。
getLong
接口
TemporalAccessor
field
-领域有,不空
DateTimeException
如果不能得到一个价值领域
UnsupportedTemporalTypeException
如果字段不支持
ArithmeticException
如果数值溢出时
public int getMonthValue()
这个方法返回月作为一个int
从1到12。应用程序代码经常清楚如果枚举Month
是通过调用getMonth()
使用。
getMonth()
public Month getMonth()
getMonthValue()
public int getDayOfMonth()
此方法返回月天原始int
价值。
public boolean isValidYear(int year)
这种方法检查是否这个月和一天和输入年形成一个有效的日期。这只能返回假为2月29日。
year
年的验证,超出范围的值,返回false
Year.isValidMonthDay(MonthDay)
public MonthDay withMonth(int month)
MonthDay
与月的年变化。
这将返回一个指定月份的月天。如果一个月的天数是无效的,则指定的一个月的一天将被调整到月的最后一个有效的一天。
此实例是不可变的,不受此方法调用的影响。
month
-年月在返回的月日,从1(一月)到12(十二月)
MonthDay
为主,不为空
DateTimeException
如果年值月是无效的
public MonthDay with(Month month)
MonthDay
与月的年变化。
这将返回一个指定月份的月天。如果一个月的天数是无效的,则指定的一个月的一天将被调整到月的最后一个有效的一天。
此实例是不可变的,不受此方法调用的影响。
month
-年月在返回的月日,不空
MonthDay
为主,不为空
public MonthDay withDayOfMonth(int dayOfMonth)
MonthDay
与月改变的一天。
这将返回一个月的一天与指定的一天。如果一个月的一天无效,则抛出一个异常。
此实例是不可变的,不受此方法调用的影响。
dayOfMonth
-月在返回月第一天,从1到31
MonthDay
为主,不为空
DateTimeException
如果月值一天是无效的,或者如果月天月是无效的
public <R> R query(TemporalQuery<R> query)
这个查询这个月天使用指定的查询策略对象。的TemporalQuery
对象定义了用来获得结果的逻辑。阅读查询的文档,了解该方法的结果将是什么。
这种方法的结果是通过调用指定的查询通过this
作为论据的TemporalQuery.queryFrom(TemporalAccessor)
方法得到的。
query
接口
TemporalAccessor
R
-结果的类型
query
-调用查询,不空
DateTimeException
如果无法查询(查询所定义)
ArithmeticException
如果数值溢出时(由查询定义)
public Temporal adjustInto(Temporal temporal)
这将返回一个相同的可观察类型的时间对象的输入与月和一天的变化是相同的。
调整是相当于用Temporal.with(TemporalField, long)
两次,通过ChronoField.MONTH_OF_YEAR
和ChronoField.DAY_OF_MONTH
的领域。如果指定的时间对象不使用ISO的日历系统,然后DateTimeException
抛出。
在大多数情况下,更清晰的用Temporal.with(TemporalAdjuster)
反向调用模式:
这两条线是等价的,但第二种方法是建议时间= thismonthday adjustinto(时间);时间=(thismonthday)与时间;
此实例是不可变的,不受此方法调用的影响。
adjustInto
接口
TemporalAdjuster
temporal
-调整目标对象,不为空
DateTimeException
如果无法适应
ArithmeticException
如果数值溢出时
public String format(DateTimeFormatter formatter)
本月日将通过格式化程序产生一个字符串。
formatter
-格式化程序使用,不为空
DateTimeException
如果打印时发生错误
public LocalDate atYear(int year)
LocalDate
。
这将返回一个LocalDate
从本月日形成指定的年。
2月29日的一个月天将调整到2月28日,如果一年不是一个飞跃。
此实例是不可变的,不受此方法调用的影响。
year
年的使用,从min_year到max_year
DateTimeException
如果今年是在年的有效范围
public int compareTo(MonthDay other)
比较是基于一个月的价值,然后是一天的价值。这是“等于”一致,所定义的Comparable
。
compareTo
接口
Comparable<MonthDay>
other
-其他月日相比,不空
public boolean isAfter(MonthDay other)
other
-其他月日相比,不空
public boolean isBefore(MonthDay other)
other
-其他月日相比,不空
public boolean equals(Object obj)
比较是基于一年内的一个月天的时间线位置。
equals
方法重写,继承类
Object
obj
-检查对象,空返回false
Object.hashCode()
,
HashMap
public int hashCode()
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.