在现代 Java 开发中,处理时间间隔和持续时间是常见的需求。无论是计算任务执行耗时、设置定时器,还是比较两个事件之间的时间差,都需要用到 Java 持续时间处理 的相关知识。本文将手把手教你如何使用 Java 8 引入的 java.time.Duration 类,轻松实现 Java 时间计算 和 Java 时间间隔 的操作。
Duration 是 Java 8 在 java.time 包中引入的一个不可变类,用于表示两个时间点之间的时间量,通常以秒和纳秒为单位。它非常适合用来表示“持续了多久”,比如“3小时15分钟”或“120秒”。
以下是几种创建 Duration 实例的常见方式:
// 1. 使用 ofXXX() 静态方法Duration fiveMinutes = Duration.ofMinutes(5);Duration twoHours = Duration.ofHours(2);Duration tenSeconds = Duration.ofSeconds(10);// 2. 使用 between() 方法计算两个时间点之间的持续时间LocalDateTime start = LocalDateTime.now();// ... 执行一些操作 ...LocalDateTime end = LocalDateTime.now();Duration elapsed = Duration.between(start, end);// 3. 从字符串解析(ISO-8601 格式)Duration fromString = Duration.parse("PT1H30M"); // 表示 1小时30分钟 一旦你有了 Duration 对象,就可以进行各种操作:
Duration duration = Duration.ofHours(2).plusMinutes(30);// 获取总秒数long totalSeconds = duration.getSeconds(); // 9000 秒// 获取小时、分钟、秒(分别提取)long hours = duration.toHours(); // 2long minutes = duration.toMinutes() % 60; // 30// 判断是否为零、正数或负数duration.isZero(); // falseduration.isNegative(); // false// 比较两个 DurationDuration another = Duration.ofMinutes(150);boolean isEqual = duration.equals(another); // true// 添加或减去时间duration = duration.plus(Duration.ofMinutes(10));
下面是一个典型的使用场景——测量一段代码的执行耗时:
import java.time.Duration;import java.time.Instant;public class PerformanceTest { public static void main(String[] args) throws InterruptedException { Instant start = Instant.now(); // 模拟耗时操作 Thread.sleep(1500); // 暂停 1.5 秒 Instant end = Instant.now(); Duration duration = Duration.between(start, end); System.out.println("执行耗时: " + duration.toMillis() + " 毫秒"); System.out.println("格式化输出: " + String.format("%d 分 %d 秒 %d 毫秒", duration.toMinutes(), duration.getSeconds() % 60, duration.toMillis() % 1000)); }} Duration 只适用于基于时间的量(如秒、毫秒),不适用于日期(如天、月、年)。如果需要处理日期间隔,请使用 Period 类。Duration 是不可变对象,所有修改操作(如 plus()、minus())都会返回一个新的 Duration 实例。Duration 是线程安全的,因为它是不可变的。通过本文的学习,你应该已经掌握了 Java 持续时间处理 的核心技巧。利用 Duration 类,你可以轻松实现 Java 时间计算、Java 时间间隔 的获取与操作。无论你是初学者还是有经验的开发者,掌握 Duration类使用 都能让你的代码更加简洁、高效且易于维护。
赶快在你的项目中尝试使用 Duration 吧!你会发现处理时间从未如此简单。
本文由主机测评网于2025-12-09发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125170.html