一、简介
Duration
是 Java 8 引入的一个类,属于 java.time
包,用于表示时间间隔或持续时间,通常用于表示秒和纳秒的时间量。这个类为时间间隔提供了基于秒和纳秒的表示,使得处理时间间隔变得更加容易和直观。同时一旦创建了一个 Duration
对象,就不能修改它。Duration
类提供的方法来执行各种操作,比如加法、减法、比较等。
二、示例
-
创建 Duration 实例
Duration oneSecond = Duration.ofSeconds(1);
Duration twoSeconds = Duration.ofMillis(2000); // 这将产生与 2 秒相同的 Duration
Duration customDuration = Duration.of(1, ChronoUnit.HOURS); // 1小时
-
Duration 的操作
Duration totalDuration = oneSecond.plus(twoSeconds);
Duration difference = totalDuration.minus(oneSecond);
-
获取 Duration 的值
long seconds = totalDuration.getSeconds(); // 注意:这不会返回完整的秒数,如果包含纳秒部分,则只返回完整的秒数
long nanoPart = totalDuration.getNano(); // 获取纳秒部分
-
将 Duration 转换为其他时间单位
long millis = totalDuration.toMillis();
long minutes = totalDuration.toMinutesPart(); // 注意:这不是一个直接的方法,你可能需要自定义
-
计算时间间隔
// 获取当前时间
Instant start = Instant.now();
// 30秒后的时间
Instant end = start.plusSeconds(30);
// 使用between方法计算时间间隔
Duration duration = Duration.between(start, end);
// 打印时间间隔的秒数
System.out.println("The duration in seconds is: " + duration.getSeconds());
// 如果需要更精确的时间(包括纳秒),可以打印整个Duration对象
System.out.println("The duration is: " + duration);