使用 java.time.duration.between() 方法可以获取两个时间点之间的时长间隔。只需传入起始时间和结束时间,该方法会自动计算并返回一个 duration 对象,其中包含秒和纳秒信息。

如何获取当前时间的 Duration 间隔
要获取从程序启动或某个固定起点到当前的 Duration,通常以 Instant.now() 作为起始点,再次调用 Instant.now() 作为结束点。这两个瞬时值之间的差值即为经过的时间。

import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant start = Instant.now();
// 模拟一些耗时操作
try { Thread.sleep(100); } catch (InterruptedException e) {}
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
System.out.println("总毫秒数: " + duration.toMillis());
System.out.println("总秒数: " + duration.getSeconds());
}
}如何处理 Duration 中的天、时、分、秒
Duration 类主要关注秒和纳秒,不直接支持天(Day)的概念,因为天的长度可能因夏令时而变化。如果需要更精细的分解,可以使用 toDaysPart()、toHoursPart() 等方法来获取各个时间单位的分量。
立即学习“Java免费学习笔记(深入)”;

import java.time.Duration;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant start = Instant.now();
try { Thread.sleep(500); } catch (InterruptedException e) {}
Instant end = Instant.now();
Duration d = Duration.between(start, end);
System.out.println("天数部分: " + d.toDaysPart());
System.out.println("小时部分: " + d.toHoursPart());
System.out.println("分钟部分: " + d.toMinutesPart());
System.out.println("秒部分: " + d.toSecondsPart());
}
}基于程序中某个输入、条件或结果的具体问题
当起始时间晚于结束时间时,Duration.between() 会返回一个负值的 Duration。这在处理时间戳比较或日志分析时非常常见,可以通过检查 isNegative() 方法来处理这种情况。


















