- java.lang.Object
-
- java.time.chrono.JapaneseDate
-
- All Implemented Interfaces:
-
Serializable,Comparable<ChronoLocalDate>,ChronoLocalDate,Temporal,TemporalAccessor,TemporalAdjuster
public final class JapaneseDate extends Object implements ChronoLocalDate, Serializable
在日本帝国日历系统的日期。此日期使用Japanese Imperial calendar操作 。 这个日历系统主要在日本使用。
日系帝国日历系统与日历系统相同,除了基于时代的年份编号。 幼稚年被定义为等同于ISO抗精神病学年。
日本介绍了从明治6开始的公历。只有明治和以后的时代得到支持; 1月1日明治6日之前的日期不受支持。
例如,日本年份“平成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
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 ChronoLocalDateTime<JapaneseDate>atTime(LocalTime localTime)结合这个日期与时间创建一个ChronoLocalDateTime。booleanequals(Object obj)将此日期与其他日期进行比较,包括年表。static JapaneseDatefrom(TemporalAccessor temporal)从时间对象获取JapaneseDate。JapaneseChronologygetChronology()获得这个日期的年表,这是日本的日历系统。JapaneseEragetEra()获得这个时代适用的时代。longgetLong(TemporalField field)获取指定字段的long。inthashCode()这个日期的哈希码。booleanisSupported(TemporalField field)检查指定的字段是否受支持。intlengthOfMonth()返回由此日期表示的月份的长度。intlengthOfYear()返回由日历系统定义的由此日期表示的年份的长度。JapaneseDateminus(long amountToAdd, TemporalUnit unit)返回与该对象相同类型的对象,并减去指定的时间段。JapaneseDateminus(TemporalAmount amount)返回与该对象相同类型的对象,并减去一个数量。static JapaneseDatenow()从默认时区的系统时钟获取当前的JapaneseDate。static JapaneseDatenow(Clock clock)从指定的时钟获取当前的JapaneseDate。static JapaneseDatenow(ZoneId zone)从指定时区的系统时钟获取当前的JapaneseDate。static JapaneseDateof(int prolepticYear, int month, int dayOfMonth)获取JapaneseDate表示日历日历系统中的日期,月份和月份字段中的日期。static JapaneseDateof(JapaneseEra era, int yearOfEra, int month, int dayOfMonth)从日期,年龄,月份和月份字段中获取JapaneseDate表示日历日历系统中的日期。JapaneseDateplus(long amountToAdd, TemporalUnit unit)返回与此对象相同类型的对象,并添加指定的句点。JapaneseDateplus(TemporalAmount amount)返回与此对象相同类型的对象,并添加一个金额。ValueRangerange(TemporalField field)获取指定字段的有效值的范围。longtoEpochDay()将此日期转换为大纪元日。StringtoString()返回对象的字符串表示形式。longuntil(Temporal endExclusive, TemporalUnit unit)根据指定的单位计算直到另一个日期的时间量。ChronoPerioduntil(ChronoLocalDate endDate)将此日期和其他日期之间的期间计算为ChronoPeriod。JapaneseDatewith(TemporalAdjuster adjuster)通过进行调整,返回与该对象相同类型的调整对象。JapaneseDatewith(TemporalField field, long newValue)返回与该对象具有相同类型的对象,并更改指定的字段。-
Methods inherited from interface java.time.chrono.ChronoLocalDate
adjustInto, compareTo, format, isAfter, isBefore, isEqual, isLeapYear, isSupported, query, timeLineOrder, toString, until
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.time.temporal.TemporalAccessor
get
-
-
-
-
方法详细信息
-
now
public static JapaneseDate now()
- 结果
- 当前日期使用系统时钟和默认时区,不为空
-
now
public static JapaneseDate now(ZoneId zone)
从指定时区的系统时钟获取当前的JapaneseDate。这将查询
system clock获取当前日期。 指定时区可以避免对默认时区的依赖。使用此方法将阻止使用备用时钟进行测试,因为时钟是硬编码的。
- 参数
-
zone- 要使用的区域ID,不为空 - 结果
- 当前日期使用系统时钟,不为空
-
now
public static JapaneseDate now(Clock clock)
从指定的时钟获取当前的JapaneseDate。这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 可以使用dependency injection引入备用时钟。
- 参数
-
clock- 要使用的时钟,不为空 - 结果
- 当前日期,不为null
- 异常
-
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- 日本的prolepticYear年 -
month- 日本的月份,从1到12 -
dayOfMonth- 日本人的月份,从1到31 - 结果
- 日语日历系统中的日期,不为空
- 异常
-
DateTimeException- 如果任何字段的值超出范围,或者如果月的日期对于月份无效
-
from
public static JapaneseDate from(TemporalAccessor temporal)
从时间对象获取JapaneseDate。这在日本日历系统中基于指定的时间获取日期。 A
TemporalAccessor表示一个任意的日期和时间信息集,该工厂转换为JapaneseDate一个实例。转换通常使用
EPOCH_DAY字段,这是跨日历系统标准化的。该方法匹配功能界面
TemporalQuery的签名,允许其通过方法参考JapaneseDate::from用作查询。- 参数
-
temporal- 要转换的时间对象,不为null - 结果
- 日语日历系统中的日期,不为空
- 异常
-
DateTimeException- 如果无法转换为JapaneseDate - 另请参见:
-
Chronology.date(TemporalAccessor)
-
getChronology
public JapaneseChronology getChronology()
获得这个日期的年表,这是日本的日历系统。Chronology表示正在使用的日历系统。 时代和其他领域在ChronoField由时间顺序定义。- Specified by:
-
getChronology在接口ChronoLocalDate - 结果
- 日本的年表,不为空
-
getEra
public JapaneseEra getEra()
获得这个时代适用的时代。日历日历系统有多个时间由
JapaneseEra定义。- Specified by:
-
getEra在接口ChronoLocalDate - 结果
- 在此日期适用的时代不为零
-
lengthOfMonth
public int lengthOfMonth()
返回由此日期表示的月份的长度。这将以天为单位返回月份的长度。 月份长度与ISO日历系统相匹配。
- Specified by:
-
lengthOfMonth在接口ChronoLocalDate - 结果
- 月的长度以天为单位
-
lengthOfYear
public int lengthOfYear()
描述从接口ChronoLocalDate复制- Specified by:
-
lengthOfYear在接口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,那么这个方法的结果是通过调用this作为参数TemporalField.isSupportedBy(TemporalAccessor)传递的。 字段是否受支持由字段决定。- Specified by:
-
isSupported在接口ChronoLocalDate - Specified by:
-
isSupported在接口TemporalAccessor - 参数
-
field- 要检查的字段,null返回false - 结果
- 如果在此日期支持该字段,则为true,否则为false
-
-
range
public ValueRange range(TemporalField field)
描述从接口TemporalAccessor复制获取指定字段的有效值的范围。所有字段都可以表示为
long整数。 此方法返回描述该值的有效范围的对象。 该时间对象的值用于提高返回范围的精度。 如果日期时间无法返回范围,因为该字段不受支持或由于其他原因,将抛出异常。请注意,结果仅描述最小和最大有效值,重要的是不要太多读取它们。 例如,可以在该范围内的值对该字段无效。
- Specified by:
-
range在接口TemporalAccessor - 参数
-
field- 查询范围的字段,不为null - 结果
- 字段的有效值的范围不为null
-
getLong
public long getLong(TemporalField field)
说明从界面TemporalAccessor复制获取指定字段的long。这将查询指定字段的值的日期时间。 返回的值可能在该字段的值的有效范围之外。 如果日期时间不能返回值,因为该字段不受支持或由于其他原因,将抛出异常。
- Specified by:
-
getLong在接口TemporalAccessor - 参数
-
field- 要获取的字段,不为null - 结果
- 该字段的值
-
with
public JapaneseDate with(TemporalField field, long newValue)
说明从界面ChronoLocalDate复制返回与该对象具有相同类型的对象,并更改指定的字段。这将返回一个基于该对象的新对象,其中指定字段的值已更改。 例如,在
LocalDate,这可以用于设置年,月或月。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则将月份更改为2月份将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
with在接口ChronoLocalDate - Specified by:
-
with在接口Temporal - 参数
-
field- 要在结果中设置的字段,不为null -
newValue- 结果中字段的新值 - 结果
- 与指定字段集相同类型的对象,不为null
-
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
- 异常
-
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 - 结果
- 具有指定调整的相同类型的对象,不为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- 如果发生数字溢出
-
plus
public JapaneseDate plus(long amountToAdd, TemporalUnit unit)
说明从接口ChronoLocalDate复制返回与此对象相同类型的对象,并添加指定的句点。此方法基于添加了指定句点的新对象。 例如,在
LocalDate,这可以用来添加几年,几个月或几天。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则添加一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
plus在接口ChronoLocalDate - Specified by:
-
plus在接口Temporal - 参数
-
amountToAdd- 要添加的指定单位的数量,可能为负数 -
unit- 要添加的单位,不为null - 结果
- 与指定期间相同类型的对象添加,不为空
-
minus
public JapaneseDate minus(long amountToAdd, TemporalUnit unit)
描述从接口ChronoLocalDate复制返回与该对象相同类型的对象,并减去指定的时间段。该方法返回一个基于该对象的新对象,减去指定的时间段。 例如,在
LocalDate,这可以用来减去几年,几个月或几天。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表3月31日的日期,则减去一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
minus在接口ChronoLocalDate - Specified by:
-
minus在接口Temporal - 参数
-
amountToAdd- 扣除指定单位的金额,可能为负数 -
unit- 减去量的单位,不为空 - 结果
- 与指定周期相同类型的对象减去,不为空
-
atTime
public final ChronoLocalDateTime<JapaneseDate> atTime(LocalTime localTime)
说明从接口ChronoLocalDate复制结合这个日期与时间创建一个ChronoLocalDateTime。这将在指定的时间返回从此日期形成的
ChronoLocalDateTime。 日期和时间的所有可能的组合都是有效的。- Specified by:
-
atTime在接口ChronoLocalDate - 参数
-
localTime- 当地使用时间,不为空 - 结果
- 从该日期到指定时间形成的本地日期时间,不为空
-
until
public ChronoPeriod until(ChronoLocalDate endDate)
说明从接口ChronoLocalDate复制将此日期和另一个日期之间的期间计算为ChronoPeriod。这计算两个日期之间的期间。 所有提供的年表使用年,月和日计算周期,但是,
ChronoPeriodAPI允许使用其他单位来表示期间。起点和终点是
this和指定的日期。 如果结束在开始之前,结果将为负数。 每年,每月的负号将相同。计算使用此日期的年表进行。 如有必要,输入日期将被转换为匹配。
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
until在接口ChronoLocalDate - 参数
-
endDate- 结束日期,排他,可能在任何年代,不为空 - 结果
- 此日期与结束日期之间的期间不为空
-
toEpochDay
public long toEpochDay()
说明从接口ChronoLocalDate复制将此日期转换为大纪元日。Epoch Day count是第0天为1970-01-01(ISO)的简单递增计数。 这个定义对于所有的年表都是一样的,可以进行转换。此默认实现查询
EPOCH_DAY字段。- Specified by:
-
toEpochDay在接口ChronoLocalDate - 结果
- 大纪元日等于这个日期
-
equals
public boolean equals(Object obj)
将此日期与其他日期进行比较,包括年表。比较这个
JapaneseDate与另一个确保日期是一样的。只有
JapaneseDate类型的JapaneseDate被比较,其他类型返回false。 要比较两个TemporalAccessor实例的日期,包括两个不同年表中的日期,请使用ChronoField.EPOCH_DAY作为比较。- Specified by:
-
equals在接口ChronoLocalDate - 参数
-
obj- 要检查的对象,null返回false - 结果
- 如果这等于其他日期,则为真
- 另请参见:
-
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复制根据指定的单位计算直到另一个日期的时间量。这个计算两个之间的时间量
ChronoLocalDate在单一方面对象TemporalUnit。 起点和终点是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在接口Temporal - 参数
-
endExclusive- 结束日期,排他,在同一年代转换为ChronoLocalDate,不为空 -
unit- 测量金额的单位,不为空 - 结果
- 此日期与结束日期之间的时间
-
toString
public String toString()
描述从类别复制:Object返回对象的字符串表示形式。 一般情况下,toString方法返回一个“toString代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。该
toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:getClass().getName() + '@' + Integer.toHexString(hashCode())
- Specified by:
-
toString在接口ChronoLocalDate - 重写:
-
toString在Object - 结果
- a string representation of the object.
-
-