java.time.Duration???

java1234

共 1463字,需浏览 3分钟

 · 2020-11-26

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

  作者 |  木西-Muxy

来源 |  urlify.cn/ZBBNbu

66套java从入门到精通实战课程分享

一个Duration对象表示两个Instant间的一段时间,是在Java 8中加入的新功能。

一个Duration实例是不可变的,当创建出对象后就不能改变它的值了。你只能通过Duration的计算方法,来创建出一个新的Durtaion对象。你会在之后的教程中见到的。

创建Duration实例 
使用Duration类的工厂方法来创建一个Duration对象,以下是一个使用between()的例子:

Instant first = Instant.now();
// wait some time while something happens
Instant second = Instant.now();
Duration duration = Duration.between(first, second);

访问Duration的时间 
一个Duration对象里有两个域:纳秒值(小于一秒的部分),秒钟值(一共有几秒),他们的组合表达了时间长度。注意屯使用System.getCurrentTimeMillis()时不同,Duration不包含毫秒这个属性。 
你可以通过以下两个方法得到它们的值:

long seconds =  getSeconds()
int nanos   =   getNano()

你也可以转换整个时间到其它单位如纳秒、分钟、小时、天:

toNanos()
toMillis()
toMinutes()
toHours()
toDays()

举例而言:toNanos()与getNano()不同,toNanos()获得的是Duration整个时间共有多少纳秒,而getNano()只是获得这段时间中小于一秒的部分。你也许会问,为什么没有toSeconds()方法,因为已经有getSeconds()这个方法能达到同样的功能了。

Duration计算 
Duration类包含一系列的计算方法:

plusNanos()
plusMillis()
plusSeconds()
plusMinutes()
plusHours()
plusDays()
minusNanos()
minusMillis()
minusSeconds()
minusMinutes()
minusHours()
minusDays()

这些方法所做的事都是相似的,我在这儿也不展示内部实现细节了,就展示一个加减的例子吧:

Duration start = ... //obtain a start duration
Duration added      = start.plusDays(3);
Duration subtracted = start.minusDays(3);

第一行创建了一个Duration对象叫start,具体怎么创建可以参考前面的代码。第二三行样例创建了两个新的Duration,通过调用start的加减操作,使得added对象表示的时间比start多三天,而substracted则少三天。 
所有的计算方法都会返回一个新的Duration,以保证Duration的不可变属性。







粉丝福利:实战springboot+CAS单点登录系统视频教程免费领取

???

?长按上方微信二维码 2 秒即可获取资料



感谢点赞支持下哈 e437eaf97e384633f87587a8346f349e.webp



浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报