在现代Java开发中,处理时间是一个常见但又容易出错的任务。为了简化时间间隔的表示和操作,Java 8引入了全新的日期时间API,其中Duration类就是专门用于表示两个时间点之间的时间量(如秒、纳秒等)。本教程将带你从零开始,深入浅出地学习Duration类的使用方法,无论你是初学者还是有一定经验的开发者,都能轻松掌握。
Duration是java.time包中的一个不可变类,用于表示以秒和纳秒为单位的时间量。它非常适合用来表示“持续时间”或“时间间隔”,比如“2小时30分钟”或“5天”。与Period不同,Duration专注于基于时间单位(如秒、毫秒),而Period则用于基于日历单位(如年、月、日)。
创建Duration有多种方式,下面是最常用的几种:
// 创建2小时的DurationDuration twoHours = Duration.ofHours(2);// 创建30分钟的DurationDuration thirtyMinutes = Duration.ofMinutes(30);// 创建5000毫秒的DurationDuration fiveSeconds = Duration.ofMillis(5000);// 创建10秒的DurationDuration tenSeconds = Duration.ofSeconds(10); // P1DT2H3M4S 表示1天2小时3分钟4秒Duration duration = Duration.parse("PT2H30M"); // 2小时30分钟// 注意:Duration不支持天(D)以上的单位,所以不能写P1D,但可以转换为秒 import java.time.LocalDateTime;import java.time.Duration;LocalDateTime start = LocalDateTime.of(2023, 10, 1, 10, 0);LocalDateTime end = LocalDateTime.of(2023, 10, 1, 12, 30);Duration duration = Duration.between(start, end);System.out.println(duration); // PT2H30M 一旦你有了Duration对象,就可以进行各种操作:
duration.getSeconds()duration.getNano()toHours()、toMinutes()、toDays()等方法plus()、minus()compareTo()、equals()import java.time.Instant;import java.time.Duration;Instant start = Instant.now();// 模拟耗时操作try { Thread.sleep(2500); // 休眠2.5秒} catch (InterruptedException e) { e.printStackTrace();}Instant end = Instant.now();Duration elapsed = Duration.between(start, end);System.out.println("耗时: " + elapsed.toMillis() + " 毫秒");// 输出:耗时: 2503 毫秒 在使用Duration时,请注意以下几点:
Duration是不可变的,所有操作都会返回新的对象。Duration来表示日历相关的间隔(如“一个月”),应使用Period。Duration表示过去的时间(结束时间早于开始时间)。ZonedDateTime配合Duration。通过本教程,你已经掌握了Java Duration的基本概念、创建方式、常用方法以及实际应用场景。无论是计算程序运行时间、设置超时机制,还是处理时间间隔逻辑,Duration都是一个强大而简洁的工具。希望这篇Java时间处理教程能帮助你在项目中更高效地处理时间相关的问题。
如果你正在学习Duration类教程,不妨动手尝试上面的代码示例,加深理解。同时,记住在实际开发中合理使用Duration和Period,避免混淆。
最后,别忘了掌握这些核心Java时间间隔计算技巧,它们将在你的日常开发中大显身手!
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129600.html