- java.lang.Object
-
- java.time.chrono.JapaneseDate
-
- 实现的所有接口
-
Serializable
,Comparable<ChronoLocalDate>
,ChronoLocalDate
,Temporal
,TemporalAccessor
,TemporalAdjuster
public final class JapaneseDate extends Object implements ChronoLocalDate, Serializable
日本帝国日历系统中的日期。本日期的运营时间为Japanese Imperial calendar 。 该日历系统主要在日本使用。
除了基于时代的年份编号之外,日本帝国日历系统与ISO日历系统相同。 预感年定义为等于ISO预感年。
日本从明治6开始引入公历。只支持明治及后来的时代; 不支持1月1日明治6日之前的日期。
例如,日本年“Heisei 24”对应于ISO年份“2012”。
致电japaneseDate.get(YEAR_OF_ERA)
将返回24。
致电japaneseDate.get(YEAR)
将返回2012。
致电japaneseDate.get(ERA)
将返回2,对应于JapaneseChronology.ERA_HEISEI
。这是一个value-based班; 在
JapaneseDate
实例上使用身份敏感操作(包括引用相等(==
),标识哈希码或同步)可能会产生不可预测的结果,应该避免使用。 应使用equals
方法进行比较。- 实现要求:
- 这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
equals(Object obj)
将此日期与另一个日期进行比较,包括年表。static JapaneseDate
from(TemporalAccessor temporal)
从时间对象获得JapaneseDate
。JapaneseChronology
getChronology()
获取此日期的年表,即日历系统。JapaneseEra
getEra()
获取此日期适用的时代。int
hashCode()
此日期的哈希码。boolean
isSupported(TemporalField field)
检查是否支持指定的字段。int
lengthOfMonth()
返回此日期表示的月份长度。JapaneseDate
minus(TemporalAmount amount)
返回与此对象相同类型的对象,并减去一定量。static JapaneseDate
now()
从默认时区的系统时钟获取当前JapaneseDate
。static JapaneseDate
now(Clock clock)
从指定的时钟获得当前的JapaneseDate
。static JapaneseDate
now(ZoneId zone)
从指定时区的系统时钟获取当前JapaneseDate
。static JapaneseDate
of(int prolepticYear, int month, int dayOfMonth)
从JapaneseDate
年,月份和日期字段获得表示日历系统中日期的JapaneseDate
。static JapaneseDate
of(JapaneseEra era, int yearOfEra, int month, int dayOfMonth)
从时代,年份,月份和日期字段获得表示日历系统中日期的JapaneseDate
。JapaneseDate
plus(TemporalAmount amount)
返回与此对象相同类型的对象,并添加一个量。String
toString()
返回对象的字符串表示形式。long
until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个日期的时间量。JapaneseDate
with(TemporalAdjuster adjuster)
返回与此对象相同类型的调整对象,并进行调整。-
声明方法的接口 java.time.chrono.ChronoLocalDate
adjustInto, atTime, compareTo, format, isAfter, isBefore, isEqual, isLeapYear, isSupported, lengthOfYear, minus, plus, query, toEpochDay, toString, until, until, with
-
声明方法的接口 java.time.temporal.TemporalAccessor
get, getLong, range
-
-
-
-
方法详细信息
-
now
public static JapaneseDate now()
- 结果
- 使用系统时钟和默认时区的当前日期,不为空
-
now
public static JapaneseDate now(ZoneId zone)
- 参数
-
zone
- 要使用的区域ID,不为空 - 结果
- 使用系统时钟的当前日期,不为空
-
now
public static JapaneseDate now(Clock clock)
从指定的时钟获得当前的JapaneseDate
。这将查询指定的时钟以获取当前日期 - 今天。 使用此方法允许使用备用时钟进行测试。 可以使用dependency injection引入备用时钟。
- 参数
-
clock
- 要使用的时钟,不为空 - 结果
- 当前日期,不为空
- 异常
-
DateTimeException
- 如果无法获得当前日期
-
of
public static JapaneseDate of(JapaneseEra era, int yearOfEra, int month, int dayOfMonth)
从时代,年代,月份和日期字段获得表示日历系统中日期的JapaneseDate
。这将返回带有指定字段的
JapaneseDate
。 该日必须对年和月有效,否则将抛出异常。日语月份和日期与ISO日历系统中的相同。 当时代变化时,它们不会被重置。 例如:
6th Jan Showa 64 = ISO 1989-01-06 7th Jan Showa 64 = ISO 1989-01-07 8th Jan Heisei 1 = ISO 1989-01-08 9th Jan Heisei 1 = ISO 1989-01-09
- 参数
-
era
- 日本时代,不是空的 -
yearOfEra
- 日本时代的一年 -
month
- 日本的一年中,从1到12 -
dayOfMonth
- 日本的一天,从1到31 - 结果
- 日历系统中的日期,不为空
- 异常
-
DateTimeException
- 如果任何字段的值超出范围,或者月中的日期无效,或者日期不是日本时代
-
of
public static JapaneseDate of(int prolepticYear, int month, int dayOfMonth)
从JapaneseDate
年,月份和日期字段获得表示日历系统中的日期的JapaneseDate
。这将返回带有指定字段的
JapaneseDate
。 该日必须对年和月有效,否则将抛出异常。日本的早期,月份和日期与ISO日历系统中的相同。 当时代变化时,它们不会被重置。
- 参数
-
prolepticYear
- 日本的普通年 -
month
- 日本的月份,从1到12 -
dayOfMonth
- 日本的一天,从1到31 - 结果
- 日历系统中的日期,不为空
- 异常
-
DateTimeException
- 如果任何字段的值超出范围,或者月份的月份无效
-
from
public static JapaneseDate from(TemporalAccessor temporal)
从时间对象获得JapaneseDate
。这基于指定的时间在日本日历系统中获得日期。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为JapaneseDate
的实例。转换通常使用
EPOCH_DAY
字段,该字段在日历系统中标准化。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考JapaneseDate::from
用作查询。- 参数
-
temporal
- 要转换的时态对象,而不是null - 结果
- 日历系统中的日期,不为空
- 异常
-
DateTimeException
- 如果无法转换为JapaneseDate
- 另请参见:
-
Chronology.date(TemporalAccessor)
-
getChronology
public JapaneseChronology getChronology()
获取此日期的年表,即日历系统。Chronology
表示正在使用的日历系统。ChronoField
中的时代和其他领域由年表定义。- Specified by:
-
getChronology
in interfaceChronoLocalDate
- 结果
- 日本年表,不是空的
-
getEra
public JapaneseEra getEra()
获取此日期适用的时代。日历系统具有由
JapaneseEra
定义的多个时代。- Specified by:
-
getEra
in interfaceChronoLocalDate
- 结果
- 适用于此日期的时代,不为空
-
lengthOfMonth
public int lengthOfMonth()
返回此日期表示的月份长度。这将返回以天为单位的月份长度。 月份长度与ISO日历系统的长度相匹配。
- Specified by:
-
lengthOfMonth
,界面ChronoLocalDate
- 结果
- 以天为单位的月份长度
-
isSupported
public boolean isSupported(TemporalField field)
检查是否支持指定的字段。这将检查是否可以查询指定字段的日期。 如果为false,则调用
range
和get
方法将引发异常。如果该字段是
ChronoField
,则在此处执行查询。 支持的字段是:-
DAY_OF_WEEK
-
DAY_OF_MONTH
-
DAY_OF_YEAR
-
EPOCH_DAY
-
MONTH_OF_YEAR
-
PROLEPTIC_MONTH
-
YEAR_OF_ERA
-
YEAR
-
ERA
ChronoField
实例将返回false。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数。 字段是否受支持由字段确定。- Specified by:
-
isSupported
in interfaceChronoLocalDate
- Specified by:
-
isSupported
接口TemporalAccessor
- 参数
-
字段
- 要检查的字段,null返回false - 结果
- 如果此日期支持该字段,则为true,否则为false
-
-
with
public JapaneseDate with(TemporalAdjuster adjuster)
返回与此对象相同类型的调整对象,并进行调整。这将根据指定调整程序的规则调整此日期时间。 简单的调整器可能只是设置其中一个字段,例如年份字段。 更复杂的调整器可能会将日期设置为该月的最后一天。
TemporalAdjusters
中提供了一些常见的调整。 这些包括找到“月的最后一天”和“下周三”。 理算员负责处理特殊情况,例如不同长度的月份和闰年。一些示例代码指示使用此方法的方式和原因:
date = date.with(Month.JULY); // most key classes implement TemporalAdjuster date = date.with(lastDayOfMonth()); // static import from Adjusters date = date.with(next(WEDNESDAY)); // static import from Adjusters and DayOfWeek
- Specified by:
-
with
在界面ChronoLocalDate
- Specified by:
-
with
在界面Temporal
- 参数
-
adjuster
- 要使用的调整器,而不是null - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
plus
public JapaneseDate plus(TemporalAmount amount)
返回与此对象相同类型的对象,并添加一个量。这会调整此时间,根据指定数量的规则添加。 该数量通常为
Period
,但可以是实现TemporalAmount
接口的任何其他类型,例如Duration
。一些示例代码指示使用此方法的方式和原因:
date = date.plus(period); // add a Period instance date = date.plus(duration); // add a Duration instance date = date.plus(workingDays(6)); // example user-written workingDays method
请注意,不能保证调用
plus
后跟minus
返回相同的日期时间。- Specified by:
-
plus
接口ChronoLocalDate
- Specified by:
-
plus
在界面Temporal
- 参数
-
amount
- 要添加的金额,不为空 - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
minus
public JapaneseDate minus(TemporalAmount amount)
返回与此对象相同类型的对象,并减去一定量。这会调整此时间,根据指定数量的规则减去。 该数量通常为
Period
,但可以是实现TemporalAmount
接口的任何其他类型,例如Duration
。一些示例代码指示使用此方法的方式和原因:
date = date.minus(period); // subtract a Period instance date = date.minus(duration); // subtract a Duration instance date = date.minus(workingDays(6)); // example user-written workingDays method
请注意,调用
plus
后跟minus
不能保证返回相同的日期时间。- Specified by:
-
minus
,界面ChronoLocalDate
- Specified by:
-
minus
接口Temporal
- 参数
-
amount
- 要减去的金额,而不是空 - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法进行减法 -
ArithmeticException
- 如果发生数字溢出
-
equals
public boolean equals(Object obj)
将此日期与另一个日期进行比较,包括年表。将此
JapaneseDate
与另一个相比较,确保日期相同。仅比较类型为
JapaneseDate
对象,其他类型返回false。 要比较两个TemporalAccessor
实例的日期,包括两个不同年代的日期,请使用ChronoField.EPOCH_DAY
作为比较器。- Specified by:
-
equals
in interfaceChronoLocalDate
- 参数
-
obj
- 要检查的对象,null返回false - 结果
- 如果这等于另一个日期,则为true
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
此日期的哈希码。- Specified by:
-
hashCode
在界面ChronoLocalDate
- 结果
- 仅基于年表和日期的合适哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
until
public long until(Temporal endExclusive, TemporalUnit unit)
从界面复制的说明:ChronoLocalDate
根据指定的单位计算到另一个日期的时间量。这将根据单个
TemporalUnit
计算两个ChronoLocalDate
对象之间的时间量。 起点和终点是this
和指定日期。 如果结束在开始之前,结果将是否定的。 所述Temporal
传递给此方法被转换为ChronoLocalDate
使用Chronology.date(TemporalAccessor)
。 计算返回一个整数,表示两个日期之间的完整单位数。 例如,可以使用startDate.until(endDate, DAYS)
计算两个日期之间的天startDate.until(endDate, DAYS)
。使用此方法有两种等效方法。 第一种是调用此方法。 第二个是使用
TemporalUnit.between(Temporal, Temporal)
:// these two lines are equivalent amount = start.until(end, MONTHS); amount = MONTHS.between(start, end);
应该根据哪个使代码更具可读性来做出选择。计算在此方法中针对
ChronoUnit
实施 。 单位DAYS
,WEEKS
,MONTHS
,YEARS
,DECADES
,CENTURIES
,MILLENNIA
和ERAS
应该由所有的实现支持。 其他ChronoUnit
值将引发异常。如果该单元不是
ChronoUnit
,则此方法的结果是通过调用获得TemporalUnit.between(Temporal, Temporal)
传递this
作为第一个参数和转换后的输入时间作为第二个参数。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
until
在界面ChronoLocalDate
- Specified by:
-
until
in interfaceTemporal
- 参数
-
endExclusive
- 结束日期,独家,在同一年表中转换为ChronoLocalDate
,不为null -
unit
- 计量金额的单位,而不是空 - 结果
- 此日期和结束日期之间的时间量
-
toString
public String toString()
复制自类的说明:Object
返回对象的字符串表示形式。 通常,toString
方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。类
Object
的toString
方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@
”以及对象的哈希码的无符号十六进制表示形式组成。 换句话说,此方法返回一个等于值的字符串:getClass().getName() + '@' + Integer.toHexString(hashCode())
- Specified by:
-
toString
在界面ChronoLocalDate
- 重写:
-
toString
在课程Object
- 结果
- 对象的字符串表示形式。
-
-