Java8 java.time.Duration class with examples

126 阅读1分钟

java.time.Duration是java8中引入的一个对象。这是一个用来寻找两个日期之间的微观时间信息的测量。它测量的是微秒和纳秒的时间。这是一个有用的寻找各种日期和时间API类之间的时间段的方法。这是一个不可变的类,一旦创建,我们不能改变它的值和线程安全类。

签名

public final class Duration  
        implements TemporalAmount, Comparable, Serializable 

Duration类内部存储了以下两个值
纳秒 - 这是小于秒的值
秒 - 这是大于秒的值。
这与OLD APIjava.util Date不同,后者使用毫秒
getNanos()方法- 该方法用于获取纳秒
getSeconds()方法 - 该方法用于获取秒。

这是一个使用以下方法将持续时间对象转换为其他单位的例子
toNanos()
toMillis()
toMinutes()
toHours()
toDays()
我们已经看到getNanos() 方法与*toNanos()*不同
*getNanos()*总是返回小于秒的值
*toNanos()*返回持续时间对象的完整纳秒。

LocalDateTime dateTime = LocalDateTime.of(2017, 1, 1, 0, 0);  
LocalDateTime dateTime1 = LocalDateTime.now();  
System.out.println("Differnce in Nano seconds" + java.time.Duration.between(dateTime, dateTime1).getNano());  
System.out.println("Differnce in Milli seconds" + java.time.Duration.between(dateTime, dateTime1).toMillis());  
System.out.println("Differnce in  seconds" + java.time.Duration.between(dateTime, dateTime1).getSeconds());  
System.out.println("Differnce in  minutes" + java.time.Duration.between(dateTime, dateTime1).toMinutes());  
System.out.println("Differnce in  hours" + java.time.Duration.between(dateTime, dateTime1).toHours());  

输出是

Differnce in Nano seconds644942100  
Differnce in Milli seconds52185645644  
Differnce in  seconds52185645  
Differnce in  minutes869760  
Differnce in  hours14496  

如何在java8中为持续时间添加/减去小时/分钟/秒?

Duration类提供了各种方法来添加/抽象纳秒、毫秒。

plusNanos()
plusMillis()
plusSeconds()
plusMinutes()
plusHours()
plusDays()
minusNanos()
minusMillis()
minusSeconds()
minusHours()
请看下面的方法用法和例子

Duration duration = Duration.between(LocalTime.MIDNIGHT,LocalTime.NOON);  
System.out.println(duration.getSeconds());  
duration = duration.plusSeconds(400);  
System.out.println(duration.getSeconds());  
duration = duration.minusSeconds(400);  
System.out.println(duration.getSeconds());  

输出是