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