-
- 参数类型
-
D
- 此日期时间的具体类型
- All Superinterfaces:
-
Comparable<ChronoLocalDateTime<?>>
,Temporal
,TemporalAccessor
,TemporalAdjuster
- 所有已知实现类:
-
LocalDateTime
public interface ChronoLocalDateTime<D extends ChronoLocalDate> extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDateTime<?>>
在任意年代没有时区的日期时间,用于高级全球化用例。大多数应用程序应声明方法签名,字段和变量为
LocalDateTime
,而不是此接口。A
ChronoLocalDateTime
是Chronology chronology
或日历系统可插拔的本地日期时间的抽象表示。 日期时间由TemporalField
表示的字段定义,其中大多数常见实现在ChronoField
中定义。 年表定义日历系统的运行方式和标准字段的含义。何时使用此界面
API的设计鼓励使用LocalDateTime
而不是该接口,即使在应用程序需要处理多个日历系统的情况下。 其原理在ChronoLocalDate
中详细探讨。在使用此界面之前,请确保已阅读并理解
ChronoLocalDate
中的讨论。- 实现要求:
- 该接口必须小心实施,以确保其他类正确运行。 可以实例化的所有实现必须是最终的,不可变的和线程安全的。 子类应尽可能可序列化。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 default Temporal
adjustInto(Temporal temporal)
调整指定的时间对象与此对象具有相同的日期和时间。ChronoZonedDateTime<D>
atZone(ZoneId zone)
结合这个时间与时区创建一个ChronoZonedDateTime
。default int
compareTo(ChronoLocalDateTime<?> other)
将此日期时间与其他日期时间进行比较,包括年表。boolean
equals(Object obj)
检查这个日期时间是否等于另一个日期时间,包括年表。default String
format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期时间。static ChronoLocalDateTime<?>
from(TemporalAccessor temporal)
从时间对象获取一个ChronoLocalDateTime
的实例。default Chronology
getChronology()
获得这个日期时间的年表。int
hashCode()
这个日期时间的哈希码。default boolean
isAfter(ChronoLocalDateTime<?> other)
检查这个日期时间是否在指定的日期时间之后,忽略年表。default boolean
isBefore(ChronoLocalDateTime<?> other)
检查这个日期时间是否在指定的日期时间之前忽略年表。default boolean
isEqual(ChronoLocalDateTime<?> other)
检查这个日期时间是否等于指定的日期时间,忽略年表。boolean
isSupported(TemporalField field)
检查指定的字段是否受支持。default boolean
isSupported(TemporalUnit unit)
检查指定的单位是否受支持。default ChronoLocalDateTime<D>
minus(long amountToSubtract, TemporalUnit unit)
返回与该对象相同类型的对象,并减去指定的时间段。default ChronoLocalDateTime<D>
minus(TemporalAmount amount)
返回与该对象相同类型的对象,并减去一个数量。ChronoLocalDateTime<D>
plus(long amountToAdd, TemporalUnit unit)
返回与此对象相同类型的对象,并添加指定的句点。default ChronoLocalDateTime<D>
plus(TemporalAmount amount)
返回与此对象相同类型的对象,并添加一个金额。default <R> R
query(TemporalQuery<R> query)
使用指定的查询查询此日期时间。static Comparator<ChronoLocalDateTime<?>>
timeLineOrder()
获取一个比较器,比较ChronoLocalDateTime
的时间顺序,忽略年表。default long
toEpochSecond(ZoneOffset offset)
将此日期时间转换为从1970-01-01T00:00:00Z的时期开始的秒数。default Instant
toInstant(ZoneOffset offset)
将此日期时间转换为Instant
。D
toLocalDate()
获取此日期时间的本地日期部分。LocalTime
toLocalTime()
获取此日期时间的当地时间部分。String
toString()
将此日期时间输出为String
。default ChronoLocalDateTime<D>
with(TemporalAdjuster adjuster)
通过进行调整,返回与该对象相同类型的调整对象。ChronoLocalDateTime<D>
with(TemporalField field, long newValue)
返回与该对象具有相同类型的对象,并更改指定的字段。-
Methods inherited from interface java.time.temporal.TemporalAccessor
get, getLong, range
-
-
-
-
方法详细信息
-
timeLineOrder
static Comparator<ChronoLocalDateTime<?>> timeLineOrder()
获取一个比较器,比较ChronoLocalDateTime
的时间顺序,忽略年表。该比较器与
compareTo(java.time.chrono.ChronoLocalDateTime<?>)
中的比较不同之处在于它仅比较基础日期时间而不是年表。 这可以根据当地时间线上的日期时间的位置来比较不同日历系统中的日期。 潜在的比较相当于比较了当代和纳米级。
-
from
static ChronoLocalDateTime<?> from(TemporalAccessor temporal)
从时间对象获取一个ChronoLocalDateTime
的实例。这可以基于指定的时间获取本地日期时间。 A
TemporalAccessor
表示一个任意的日期和时间信息集,该工厂转换为ChronoLocalDateTime
一个实例。转换提取并结合时间对象的年表和日期时间。 该行为相当于使用
Chronology.localDateTime(TemporalAccessor)
与提取的年表。 允许实现执行优化,例如访问与相关对象相当的那些字段。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考用作查询,ChronoLocalDateTime::from
。- 参数
-
temporal
- 要转换的时间对象,不为null - 结果
- 日期时间,不为空
- 异常
-
DateTimeException
- 如果无法转换为ChronoLocalDateTime
- 另请参见:
-
Chronology.localDateTime(TemporalAccessor)
-
getChronology
default Chronology getChronology()
获得这个日期时间的年表。Chronology
表示正在使用的日历系统。 时代和其他领域在ChronoField
由时间顺序定义。- 结果
- 年表,不为空
-
toLocalDate
D toLocalDate()
获取此日期时间的本地日期部分。这将返回与此日期时间相同的年,月和日的本地日期。
- 结果
- 此日期时间的日期部分不为null
-
toLocalTime
LocalTime toLocalTime()
获取此日期时间的当地时间部分。这将返回本地时间与这个日期时间相同的小时,分钟,秒和纳秒。
- 结果
- 这个日期时间的一部分,不是null
-
isSupported
boolean isSupported(TemporalField field)
检查指定的字段是否受支持。这将检查是否可以在此日期时间查询指定的字段。 如果是假,然后调用
range
,get
和with(TemporalField, long)
方法会抛出异常。支持的字段集由年表定义,通常包括所有
ChronoField
日期和时间字段。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用得到TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数。 字段是否受支持由字段决定。- Specified by:
-
isSupported
在接口TemporalAccessor
- 参数
-
field
- 要检查的字段,null返回false - 结果
- 如果可以查询该字段,则为true,否则为false
-
isSupported
default boolean isSupported(TemporalUnit unit)
检查指定的单位是否受支持。这将检查是否可以从此日期时间添加或减去指定的单位。 如果是false,那么调用
plus(long, TemporalUnit)
和minus
的方法会抛出异常。支持单位的集合由年表定义,通常包括除了
FOREVER
之外的所有ChronoUnit
单位。如果该单元不是
ChronoUnit
,则此方法的结果是通过调用得到TemporalUnit.isSupportedBy(Temporal)
传递this
作为参数。 设备是否受支持由本机决定。- Specified by:
-
isSupported
在接口Temporal
- 参数
-
unit
- 要检查的单位,null返回false - 结果
- 如果可以添加/减去单位,则为真,否则为false
-
with
default ChronoLocalDateTime<D> 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
在接口Temporal
- 参数
-
adjuster
- 调整器使用,不为空 - 结果
- 具有指定调整的相同类型的对象,不为null
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
with
ChronoLocalDateTime<D> with(TemporalField field, long newValue)
返回与该对象具有相同类型的对象,并更改指定的字段。这将返回一个基于该对象的新对象,其中指定字段的值已更改。 例如,在
LocalDate
,这可以用于设置年,月或月的日期。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则将月份更改为2月份将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
with
在接口Temporal
- 参数
-
field
- 要在结果中设置的字段,不为null -
newValue
- 结果中字段的新值 - 结果
- 与指定字段集相同类型的对象,不为null
- 异常
-
DateTimeException
- 如果该字段无法设置 -
ArithmeticException
- 如果发生数字溢出
-
plus
default ChronoLocalDateTime<D> 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
在接口Temporal
- 参数
-
amount
- 要添加的金额,不为null - 结果
- 具有指定调整的相同类型的对象,不为null
- 异常
-
DateTimeException
- 如果不能添加 -
ArithmeticException
- 如果发生数字溢出
-
plus
ChronoLocalDateTime<D> plus(long amountToAdd, TemporalUnit unit)
返回与此对象相同类型的对象,并添加指定的句点。此方法基于添加了指定句点的新对象。 例如,在
LocalDate
,这可以用来添加几年,几个月或几天。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则添加一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
plus
在接口Temporal
- 参数
-
amountToAdd
- 要添加的指定单位的数量,可能为负数 -
unit
- 要添加的单位,不为null - 结果
- 与指定期间相同类型的对象添加,不为空
- 异常
-
DateTimeException
- 如果无法添加本机 -
ArithmeticException
- 如果发生数字溢出
-
minus
default ChronoLocalDateTime<D> 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
在接口Temporal
- 参数
-
amount
- 减去量,不为空 - 结果
- 具有指定调整的相同类型的对象,不为null
- 异常
-
DateTimeException
- 如果不能进行减法 -
ArithmeticException
- 如果发生数字溢出
-
minus
default ChronoLocalDateTime<D> minus(long amountToSubtract, TemporalUnit unit)
返回与该对象相同类型的对象,并减去指定的时间段。该方法返回一个基于该对象的新对象,减去指定的时间段。 例如,在
LocalDate
,这可以用来减去几年,几个月或几天的数量。 返回的对象将具有与该对象相同的可观察类型。在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表3月31日的日期,则减去一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
- Specified by:
-
minus
在接口Temporal
- 参数
-
amountToSubtract
- 扣除指定单位的金额,可能为负数 -
unit
- 减去量的单位,不为空 - 结果
- 与指定周期相同类型的对象减去,不为空
- 异常
-
DateTimeException
- 如果不能减去单位 -
ArithmeticException
- 如果发生数字溢出
-
query
default <R> R query(TemporalQuery<R> query)
使用指定的查询查询此日期时间。这将使用指定的查询策略对象查询此日期时间。
TemporalQuery
对象定义了用于获取结果的逻辑。 阅读查询的文档,以了解该方法的结果。该方法的结果是通过在指定的查询
this
作为参数调用TemporalQuery.queryFrom(TemporalAccessor)
方法获得的。- Specified by:
-
query
在接口TemporalAccessor
- 参数类型
-
R
- 结果的类型 - 参数
-
query
- 要调用的查询,不为空 - 结果
- 查询结果可能返回null(由查询定义)
- 异常
-
DateTimeException
- 如果无法查询(由查询定义) -
ArithmeticException
- 如果发生数字溢出(由查询定义)
-
adjustInto
default Temporal adjustInto(Temporal temporal)
调整指定的时间对象与此对象具有相同的日期和时间。这将返回与输入相同的可观察类型的时间对象,日期和时间更改为与此相同。
调整相当于使用
Temporal.with(TemporalField, long)
两次,通过ChronoField.EPOCH_DAY
和ChronoField.NANO_OF_DAY
作为字段。在大多数情况下,通过使用
Temporal.with(TemporalAdjuster)
来更正呼叫模式:// these two lines are equivalent, but the second approach is recommended temporal = thisLocalDateTime.adjustInto(temporal); temporal = temporal.with(thisLocalDateTime);
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto
在接口TemporalAdjuster
- 参数
-
temporal
- 要调整的目标对象,不为null - 结果
- 调整对象,不为null
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
format
default String format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期时间。这个日期时间将传递给格式化程序以生成一个字符串。
默认实现必须如下所示:
return formatter.format(this);
- 参数
-
formatter
- 要使用的格式化程序,不为null - 结果
- 格式化的日期时间字符串,不为空
- 异常
-
DateTimeException
- 打印过程中是否发生错误
-
atZone
ChronoZonedDateTime<D> atZone(ZoneId zone)
结合这个时间与时区创建一个ChronoZonedDateTime
。这将返回从指定时区的此日期时间形成的
ChronoZonedDateTime
。 结果将尽可能接近日期时间。 时区规则(如夏令时)意味着并非每个本地日期时间对指定的区域都有效,因此可能会调整本地日期时间。本地日期时间在时间线上解析为单个时刻。 这是通过从区域ID的
rules
定义的本地日期时间中找到UTC /格林威治的有效偏移量来实现的。在大多数情况下,本地日期时间只有一个有效的偏移量。 在重叠的情况下,时钟被设置回来,有两个有效的偏移量。 该方法使用通常对应于“summer”的较早的偏移量。
在间隙向前跳跃的情况下,没有有效的偏移。 相反,本地日期时间被调整为稍后间隔的长度。 对于典型的1小时夏令时更改,本地日期时间将在一小时后移动到通常对应于“夏季”的偏移量。
为了在重叠期间获得稍后的偏移量,请对此方法的结果调用
ChronoZonedDateTime.withLaterOffsetAtOverlap()
。- 参数
-
zone
- 使用的时区,不为空 - 结果
- 从这个日期时间形成的划分的日期时间,不为null
-
toInstant
default Instant toInstant(ZoneOffset offset)
将此日期时间转换为Instant
。这将此本地日期时间和指定的偏移量组合成一个
Instant
。这个默认实现是从日期的时间和时间的第二天算起的。
- 参数
-
offset
- 用于转换的偏移量,不为空 - 结果
-
一个
Instant
代表相同的时刻,不为空
-
toEpochSecond
default long toEpochSecond(ZoneOffset offset)
将此日期时间转换为从1970-01-01T00:00:00Z的时期开始的秒数。这将此本地日期时间和指定的偏移组合,以计算从1970-01-01T00:00:00Z开始的秒数的时代秒值。 时代之后的时代的实体是积极的,较早的是负的。
这个默认实现是从日期的时间和时间的第二天算起的。
- 参数
-
offset
- 用于转换的偏移量,不为空 - 结果
- 从1970-01-01T00:00:00Z的时代开始的秒数
-
compareTo
default int compareTo(ChronoLocalDateTime<?> other)
将此日期时间与其他日期时间进行比较,包括年表。比较首先是基于时间线的日期时间,然后是时间顺序。 它与“等于”一致,如
Comparable
所定义。例如,以下是比较器顺序:
-
2012-12-03T12:00 (ISO)
-
2012-12-04T12:00 (ISO)
-
2555-12-04T12:00 (ThaiBuddhist)
-
2012-12-05T12:00 (ISO)
如果正在比较的所有日期时间对象都是相同的年表,则不需要额外的时间顺序,只使用本地日期时间。
此默认实现执行上面定义的比较。
- Specified by:
-
compareTo
在接口Comparable<D extends ChronoLocalDate>
- 参数
-
other
- 其他日期时间来比较,不为null - 结果
- 比较器值为负,如果较小,则如果较大则为正
-
-
isAfter
default boolean isAfter(ChronoLocalDateTime<?> other)
检查这个日期时间是否在指定的日期时间之后,忽略年表。该方法与
compareTo(java.time.chrono.ChronoLocalDateTime<?>)
中的比较不同之处在于,它仅比较基础日期时间而不是年表。 这允许根据时间线位置来比较不同日历系统中的日期。该默认实现基于时代和纳秒来执行比较。
- 参数
-
other
- 其他日期时间来比较,不为null - 结果
- 如果这是指定的日期时间后,则为true
-
isBefore
default boolean isBefore(ChronoLocalDateTime<?> other)
检查这个日期时间是否在指定的日期时间之前忽略年表。该方法与
compareTo(java.time.chrono.ChronoLocalDateTime<?>)
中的比较不同之处在于,它仅比较基础日期时间而不是年表。 这允许根据时间线位置来比较不同日历系统中的日期。该默认实现基于时代和纳秒来执行比较。
- 参数
-
other
- 其他日期时间来比较,不为空 - 结果
- 如果这是在指定的日期时间之前,则为true
-
isEqual
default boolean isEqual(ChronoLocalDateTime<?> other)
检查这个日期时间是否等于指定的日期时间,忽略年表。该方法与
compareTo(java.time.chrono.ChronoLocalDateTime<?>)
中的比较不同之处在于,它仅比较基础日期和时间,而不是年表。 这允许根据时间线位置来比较不同日历系统中的日期时间。该默认实现基于时代和纳秒来执行比较。
- 参数
-
other
- 其他日期时间来比较,不为null - 结果
- 如果基准日期时间等于时间轴上指定的日期时间,则为true
-
equals
boolean equals(Object obj)
检查这个日期时间是否等于另一个日期时间,包括年表。将此日期时间与另一个日期时间进行比较,确保日期时间和年表相同。
- 重写:
-
equals
在Object
- 参数
-
obj
- 要检查的对象,null返回false - 结果
- 如果这等于其他日期,则为真
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
int hashCode()
这个日期时间的哈希码。- 重写:
-
hashCode
在Object
- 结果
- 一个合适的哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-