一个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的不可变属性。

原文:https://blog.csdn.net/tjgykhulj/article/details/69053873

Java的日期与时间 java.time.Duration (转)的更多相关文章

  1. Java 8 – 日期和时间实用技巧

    当你开始使用Java操作日期和时间的时候,会有一些棘手.你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数.或者使用Date类来操作日期:当遇到加 ...

  2. JAVA中日期和时间的格式化选项

    一.使用printf方法 import java.util.Date; import java.util.Scanner; public class Test { public static void ...

  3. Java 格式化日期、时间

    有三种方法可以格式化日期.时间. 1.使用DateFormat类 获取DateFormat实例: DateFormat.getDateInstance()    只能格式化日期      2019年5 ...

  4. Java中日期和时间的相关问题

    1.java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位 ...

  5. Java之日期和时间的计算

    学习是一个循序渐进的过程,不知道你们有没有这样的感受:有很多学习过的知识在很久没有温习之后就不知不觉地还给老师了.所以最近总结,把那些还给老师的再找回来. 运行图: 时间戳: 运行效果图: 时间日期的 ...

  6. [转载]Java 8 日期&时间 API

    Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...

  7. Java知多少(77)日期和时间类

    Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类 ...

  8. Java中的日期和时间

    Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...

  9. Java 8——日期时间工具库(java.time)

    一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...

随机推荐

  1. 14.Sqoop把数据从HDFS导出到mysql

    创建数据文件 ,gopal,manager,,TP ,manisha,preader,,TP ,kalil,php dev,,AC ,prasanth,php dev,,AC ,kranthi,adm ...

  2. 【转帖】.NET的一点历史故事:Novell的崩溃和Xamarin的重生

    .NET的一点历史故事:Novell的崩溃和Xamarin的重生 https://blog.csdn.net/sD7O95O/article/details/78096502 学习安装 mono 时了 ...

  3. Nginx整合Tomcat

    现在先不考虑集群的配置问题,只实现Nginx实现一台tomact的代理 1.我们需要一个web项目,这里我把先准备好的web.war文件部署到Tomact服务器上 mvn clean install ...

  4. nginx 报错:[crit] 12456#0: *5 SSL_do_handshake() failed (SSL: error:1408A0A0:SSL routines:SSL3_GET_CLIENT_HELLO

    解决方法: 将配置 listen ssl; 更换为: listen ; ssl on; 从版本1.15.0开始,ssl on; 指令被废弃,使用 listen 443 ssl; 代替. 具体查看官网: ...

  5. Spring IOC的底层实现原理

     PS:模块之间的相互依赖叫做耦合 传统方式的开发 UserService us=new UserService(); || v 面向接口编程 UserService us=new UserServi ...

  6. ajax同源策略,jsonP跨域访问

    浏览器处于安全性的考虑,要求ajax请求,必须满足同源策略 规定:访问的协议://域名:端口号都相同时满足同源策略,浏览器可以正确解析数据,否则如果有一项不满足要求,则属于跨域访问,浏览器可以正常获取 ...

  7. ARST 第五周打卡

    Algorithm : 做一个 leetcode 的算法题 /////////////////////////////////////////////////////////////////// // ...

  8. 切割nginx access日志

    #!/bin/bash nginx_root=/www/server/nginx log_path=/www/wwwlogs yesterday=`date -d "-1 day" ...

  9. 百度音乐接口api

    百度音乐接口   百度音乐全接口 http://tingapi.ting.baidu.com/v1/restserver/ting 请求方式:GET 参数处理:format=json&calb ...

  10. 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践

    计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局   版 ...