Duration类
官网地址
基于时间的时间量,例如“34.5秒”。
此类以秒和纳秒为单位对时间的量或量进行建模。它可以使用其他基于持续时间的单位访问,如分钟和小时。此外,可以使用DAYS单位,并将其视为完全等于24小时,从而忽略夏令时的影响。有关此类基于日期的等效项,请参见期间。
物理持续时间可以是无限长的。为了实用,使用类似于Instant的约束来存储持续时间。持续时间使用纳秒分辨率,在长时间内可以保持的最大值为秒。这比目前估计的宇宙年龄还要大。
持续时间的范围需要存储一个大于长的数字。为了实现这一点,该类存储一个表示秒的long和一个表示纳秒秒的int,该值始终在0和999999999之间。该模型具有定向持续时间,这意味着该持续时间可能是负的。
持续时间以“秒”为单位,但这些不一定与基于原子钟的科学“SI秒”定义相同。这种差异只影响在闰秒附近测量的持续时间,不应影响大多数应用程序。请参阅即时讨论第二个和时间刻度的含义。
这是一个基于价值的类;在Duration实例上使用标识敏感操作(包括引用相等(==)、标识哈希代码或同步)可能会产生不可预测的结果,应避免。应使用equals方法进行比较。
实施要求:
这个类是不可变的并且是线程安全的。
按照上图可以查看Duration类。
Duration实现了 TemporalAmount, Comparable<Duration>, Serializable 这几个接口。
方法摘要
方法声明 | 功能描述 |
between(Temporal startInclusive,TemporalendExclusive) | 获取一个 Duration 实例,表示两个时间对象之间的间隔 |
toDays() | 将时间间隔转换为以天为单位 |
toHours() | 将时间间隔转换为以时为单位 |
toMinutes() | 将时间间隔转换为以分为单位 |
toSeconds() | 将时间间隔转换为以秒为单位 |
toMillis() | 将时间间隔转换为以毫秒为单位 |
toNanos() | 将时间间隔转换为以纳秒为单位 |
of(long duration) | 这个方法用于创建一个表示给定持续时间的Duration对象,单位为纳秒。持续时间可以是从零到Long.MAX_VALUE之间的任何值。 |
of(long amount, TemporalUnit unit) | 用于创建表示特定时间单位的持续时间对象。该方法接受两个参数:amount:表示持续时间的长整型数值。unit:表示时间单位的 TemporalUnit 枚举类型或其子类。 |
ofDays(long days) | 这个方法用于创建一个表示给定天数的Duration对象 |
ofHours(long hours) | 这个方法用于创建一个表示给定小时数的Duration对象。 |
ofMinutes(long minutes) | 这个方法用于创建一个表示给定分钟数的Duration对象。 |
ofSeconds(long seconds) | 这个方法用于创建一个表示给定秒数的Duration对象 |
ofMillis(long millis) | 这个方法用于创建一个表示给定毫秒数的Duration对象 |
ofNanos(long nanos) | 这个方法用于创建一个表示给定纳秒数的Duration对象。 |
plus(...) | 用于将当前Duration对象与另一个Duration对象相加,返回一个新的Duration对象,表示两个时间段的总和。 |
plusDays(...) | 用于将当前Duration对象与指定的天数相加,返回一个新的Duration对象,表示增加天数后的时间段。 |
plusHours(...) | 用于将当前Duration对象与指定的小时数相加,返回一个新的Duration对象,表示增加小时数后的时间段。 |
plusMinutes(...) | 用于将当前Duration对象与指定的分钟数相加,返回一个新的Duration对象,表示增加分钟数后的时间段。 |
plusSeconds(...) | 用于将当前Duration对象与指定的秒数相加,返回一个新的Duration对象,表示增加秒数后的时间段。 |
plusMillis(...) | 用于将当前Duration对象与指定的毫秒数相加,返回一个新的Duration对象,表示增加毫秒数后的时间段。 |
plusNanos(...) | 用于将当前Duration对象与指定的纳秒数相加,返回一个新的Duration对象,表示增加纳秒数后的时间段。 |
minus(...) | 用于从一个Duration对象中减去另一个Duration对象。它返回一个新的Duration对象,表示当前Duration对象与减去的那一个之间的差值。 |
minusDays(...) | 用于从一个Duration对象中减去一定数量的天数。它返回一个新的Duration对象,表示当前Duration对象减去指定天数后的结果。 |
minusHours(...) | 用于从一个Duration对象中减去一定数量的小时数。它返回一个新的Duration对象,表示当前Duration对象减去指定小时数后的结果。 |
minusMinutes(...) | 用于从一个Duration对象中减去一定数量的分钟数。它返回一个新的Duration对象,表示当前Duration对象减去指定分钟数后的结果。 |
minusSeconds(...) | 用于从一个Duration对象中减去一定数量的秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定秒数后的结果。 |
minusMillis(...) | 用于从一个Duration对象中减去一定数量的毫秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定毫秒数后的结果。 |
minusNanos(...) | 用于从一个Duration对象中减去一定数量的纳秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定纳秒数后的结果。 |
示例代码
import java.time.Duration;
import java.time.LocalDateTime;
public class DurationUtil {
public static void main(String[] args) {
LocalDateTime start = LocalDateTime.now();
LocalDateTime end = LocalDateTime.parse("2024-03-15T00:00:01");
Duration duration = Duration.between(start, end);
String timeString = duration.toString();
System.out.println("相差的天数: " + duration.toDays());
System.out.println("相差的小时: " + duration.toHours());
System.out.println("相差的分钟: " + duration.toMinutes());
System.out.println("相差的秒数: " + duration.getSeconds());
System.out.println("相差的毫秒: " + duration.toMillis());
System.out.println("相差的纳秒: " + duration.toNanos());
System.out.println("timeString时间: " + timeString);
}
}
输出结果
相差的天数: 45
相差的小时: 1089
相差的分钟: 65345
相差的秒数: 3920737
相差的毫秒: 3920737222
相差的纳秒: 3920737222000000
timeString时间: PT1089H5M37.222S