详解Java中Duration类的使用方法
Duration
类是Java8中新添加的日期时间类,用于表示时间的持续时间。 在Java中我们可以使用 Duration
类来进行时间的加减操作、比较两个时间点之间的时间差等操作。 下面就让我们来详解Java中 Duration
类的使用方法。
创建 Duration 对象
我们可以使用静态工厂方法 Duration.ofXXX()
或 Duration.parse() 方法来创建一个 Duration
对象。
使用 ofXXX() 方法创建 Duration 对象
Duration duration1 = Duration.ofDays(30);
Duration duration2 = Duration.ofHours(12);
Duration duration3 = Duration.ofMinutes(10);
Duration duration4 = Duration.ofSeconds(60);
Duration duration5 = Duration.ofMillis(500);
Duration duration6 = Duration.ofNanos(1000);
对于 ofXXX()
方法,XXX可以是 Days
、Hours
、Minutes
、Seconds
、Millis
和 Nanos
,分别代表天、小时、分钟、秒、毫秒和纳秒。
使用 parse() 方法创建 Duration 对象
Duration duration1 = Duration.parse("PT30S");
Duration duration2 = Duration.parse("PT2M");
Duration duration3 = Duration.parse("PT3H");
Duration duration4 = Duration.parse("PT4H30M");
Duration duration5 = Duration.parse("PT5H30M20S");
在 parse()
方法中需要传入符合 ISO-8601 规范的表示持续时间的字符串。 P
表示时间间隔,T
表示时间,而 S
、M
、H
分别代表秒、分、小时。
操作 Duration 对象中的时间
我们可以使用 Duration
类中的各种方法来进行时间的操作。下面是 Duration 类中的一些主要方法。
获取持续时间的总秒数
// 持续时间为10秒
Duration duration = Duration.ofSeconds(10);
System.out.println(duration.getSeconds()); // 10
时间比较
Duration duration1 = Duration.ofSeconds(30);
Duration duration2 = Duration.ofMinutes(1);
System.out.println(duration1.compareTo(duration2)); // -1
System.out.println(duration1.compareTo(Duration.ofSeconds(30))); // 0
System.out.println(duration2.compareTo(duration1)); // 1
时间加减
Duration duration = Duration.ofSeconds(10);
System.out.println(duration.plus(Duration.ofSeconds(5))); // PT15S
System.out.println(duration.minus(Duration.ofSeconds(5))); // PT5S
时间乘除
Duration duration = Duration.ofSeconds(10);
System.out.println(duration.multipliedBy(2)); // PT20S
System.out.println(duration.dividedBy(2)); // PT5S
示例
下面提供两个示例,分别是计算程序运行时间和计算某个事件距离当前时间还有多长时间。
示例一:计算程序运行时间
public static void main(String[] args) {
Instant start = Instant.now();
// your code here
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
System.out.println("程序运行时间:" + duration.getSeconds() + " 秒");
}
在上面的代码中,我们使用 Instant
类来获取程序开始和结束时的时间,然后使用 Duration.between()
方法来计算程序运行时间。
示例二:计算某个事件距离当前时间还有多长时间
public static void main(String[] args) throws InterruptedException {
LocalDateTime futureTime = LocalDateTime.of(2023, Month.DECEMBER, 31, 23, 59, 59);
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(now, futureTime);
System.out.println("距离2023年元旦还有:" + duration.toDays() + " 天");
}
在上面的代码中,我们使用 LocalDateTime
类来获取某个时间点,然后使用 Duration.between()
方法来计算距离这个时间点还有多长时间。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中Duration类的使用方法 - Python技术站