一个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 初始化duration_Java的日期与时间 java.time.Duration (转)相关推荐

  1. Java 常用基本类 剖析日期和时间(Java8以前)

    这里写目录标题 声明 7.5 剖析日期和时间 7.5.1 基本概念 1.时区 2.时刻和纪元时 3.年历 7.5.2 日期和时间API 1.Date 2.TimeZone 3.Locale 4.Cal ...

  2. Java 8 中处理日期和时间示例

    在Java 8以前,日期和时间处理一直被广大java程序员抱怨太难用,首先是java.util和java.sql中,都包含Date类,如果要进行时间格式化,还需要java.text.DateForma ...

  3. 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器

    目录 Pattern类 Matcher类 Java 8 新增的日期.时间格式器 Pattern类 Pattern类的实例是将一个编译好的正则表达式封装起来.因此正则表达式字符串必须先被变异成Patte ...

  4. java8 日期比较_20 个案例教你在 Java 8 中如何处理日期和时间?

    点击左上角蓝字,关注"SpringForAll社区" 专注分享Spring周边技术内容 前言 前面一篇文章写了<SimpleDateFormat 如何安全的使用?>, ...

  5. Java的日期与时间java.time.Duration的简介说明

    转自: Java的日期与时间java.time.Duration的简介说明 下文笔者讲述Duration类的简介说明,如下所示 Duration类简介 Duration对象:表示两个Instant间的 ...

  6. 日期和时间 - Java处理日期和时间

    在计算机中我们经常要处理日期和时间,我们先来看日期,日期它是指某一天,例如2016-12-20,2017-1-1,日期要看成离散的,我们再来看时间,时间有两种概念,一种是不带日期的时间,例如,12:3 ...

  7. java当月最后一天_Java日期循环,Java获取当月的第一天和最后一天 | 学步园

    1.Java日期循环 SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String dateStr1 ...

  8. java 初始化和清楚_浅谈Java中的初始化和清理

    引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...

  9. java 初始化duration_Java 8-Duration 详解

    最近发现spring boot中的有些配置使用了 Duration ,于是详细的看了 Duration 这个类 Duration 是在 Java 8中加入的,主要是用来计算日期,差值之类的. Dura ...

最新文章

  1. Connector for Python
  2. 什么时候应该将花括号用于ES6导入?
  3. python接口和抽象类的区别_接口和抽象类有什么区别?
  4. 变更控制管理流程图_制度是最好的老板,流程就是最好的管理!流程建立法则(附案例)...
  5. MIT研究生解说数学体系
  6. 漫步数学分析二十九——幂级数
  7. css33d坐标系,CSS3-3D技术
  8. python 读取合并单元格 视频_Python如何使用xlrd实现读取合并单元格
  9. 14 exec/fork/wait cycles for Process Management
  10. Spring boot MultipartResolver
  11. linux日志级别的正确使用(printk)
  12. 关于mongodb的学习与探索二
  13. 爬虫CASE01:反爬策略之使用随机user-agent模拟浏览器的网页爬取
  14. 查询域名对应的IP以及查询该IP是否已经备案开放80端口
  15. [NOIP2007]矩阵取数游戏(详细题解、含多种思路)
  16. 基于darknet的voc数据集训练和mAP测试
  17. Apache-Ant下载以及安装步骤
  18. php踩过的那些坑(2) strpos引发的血案
  19. 如何将阿里图标库的引入项目中?
  20. dedecms联动筛选_织梦联动类别联动筛选搜索查询功能插件

热门文章

  1. 一文讲透赫夫曼树算法
  2. 行波iq调制器_IQ调制
  3. xynuoj 磁带最大利用率问题 酒馆浪人的博客
  4. js获取属性值,自定义属性,修改移除属性值
  5. 短视频app开发:抖音源码,杂货铺or藏宝阁?
  6. 甜甜用计算机计算1050,甜的滋味_作文1050字_初二作文_第一范文网
  7. Android程序使用真机测试Tomcat搭建的本地服务器
  8. 【C++】磁盘文件的输入和输出
  9. 10秒破解一辆特斯拉?!网安人员再曝特斯拉低级漏洞,成本只要1000块?
  10. 51nod 1757大灾变(拆点二分网络流)