Java8 Period 类与 Duration 类 用法详解
引言
Java 8 中引入了两个与日期相关的新类:
Period :基于日期值
Duration:基于时间值
它们最大的作用就不需要你自己复杂的计算关于两个年月日之间的相差的时间或日期啦.
Period 类与 Duration 类都是一段持续时间的概念,如果需要对比时间,它们就需要一个固定的时间值,所以就需要 LocalDate 类与 Instant 类来配合它们使用:
Period 对应使用 LocalDate ,它们的作用范围域都是日期(年/月/日)
Duration 对应使用 Instant,它们的作用范围域都是时间(天/时/分/秒/毫秒/纳秒)
LocalDate
精度到日期记录固定时间值的LocalDate,创建方式:
LocalDate localDate1 = LocalDate.of(2019,9,1);
LocalDate localDate2 = LocalDate.ofYearDay(2019,150);
Period
对比时间
LocalDate start = LocalDate.of(2019,9,25);
LocalDate end = LocalDate.of(2019,9,29);
Period period = Period.between(start, end);
System.out.println("相差天数="+period.getDays());
Instant
以精度到纳秒记录固定的时间值的Instant,创建方式:
Instant instant1 = Instant.parse("2017-10-03T10:15:30.00Z");//用解析字符串的形式创建
Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());//用传入单位为毫秒的时间戳创建
Instant instant3 = Instant.ofEpochSecond(System.currentTimeMillis()/1000);//用传入为单位秒的
以上代码都是创建了某个时间点的值
Duration
Duration字面意思是持续时间
- 设置指定单位的持续时间
Duration durationDays = Duration.ofDays(1);//天
Duration durationHours = Duration.ofHours(1);//小时
Duration durationMinutes = Duration.ofMinutes(1);//分
Duration durationSeconds = Duration.ofSeconds(1);//秒
Duration durationMillis = Duration.ofMillis(1);//毫秒
- 获取指定单位的持续时间
Duration duration = Duration.ofDays(1);//设置一天时间
long timeHours = duration.toHours();//小时
long timeMinutes = duration.toMinutes();//分钟
long timeMillis = duration.toMillis();//毫秒
long timeNanos = duration.toNanos();//纳秒
String timeString = duration.toString(); //此持续时间的字符串表示形式,使用基于ISO-8601秒*的表示形式,例如 PT8H6M12.345S
System.out.println("timeHours时间="+timeHours);
System.out.println("timeMinutes时间="+timeMinutes);
System.out.println("timeMillis时间="+timeMillis);
System.out.println("timeNanos时间="+timeNanos);
System.out.println("timeString时间="+timeString);
- 获取2个时间点之间差值的持续时间
long todayTimeMillis = System.currentTimeMillis();
long yesterdayTimeMillis = todayTimeMillis - 24 * 60 * 60 * 1000;
Instant start = Instant.ofEpochMilli(yesterdayTimeMillis);
Instant end = Instant.ofEpochMilli(todayTimeMillis);
Duration duration = Duration.between(start, end);
System.out.println("天数="+duration.toDays());
注意这个天数是可以负数,意味着如果开始时间比结束时间更后面就会得到负数天数
Java8 Period 类与 Duration 类 用法详解的更多相关文章
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- Java学习 时间类 Period类与Duration类 / LocalDate类与Instant类 用法详解
前言 java 8 中引入的两个与日期相关的新类:Period 和 Duration.两个类看表示时间量或两个日期之间的差,两者之间的差异为:Period基于日期值,而Duration基于时间值.他们 ...
- java8学习之收集器用法详解与多级分组和分区
收集器用法详解: 在上次已经系统的阅读了Collector收集器的Javadoc对它已经有一个比较详细的认知了,但是!!!它毕境是只是一个接口,要使用的话还得用它的实现类,所以在Java8中有它进行了 ...
- 2020了你还不会Java8新特性?(五)收集器比较器用法详解及源码剖析
收集器用法详解与多级分组和分区 为什么在collectors类中定义一个静态内部类? static class CollectorImpl<T, A, R> implements Coll ...
- StringUtils类API及使用方法详解
StringUtils类API及使用方法详解 StringUtils方法概览 判空函数 1)StringUtils.isEmpty(String str) 2)StringUtils.isNotEmp ...
- 第15.10节 PyQt(Python+Qt)入门学习:Qt Designer可视化设计界面组件与QWidget类相关的组件属性详解
PyQt学习有阵子了,对章节的骨架基本考虑好了,准备本节就写组件的属性的,结果一是日常工作繁忙,经常晚上还要加班,二是Qt的组件属性很多,只能逐一学习.研究和整理,花的时间有点长,不过终于将可视化设计 ...
- @RequestMapping 用法详解之地址映射
@RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- c++中vector的用法详解
c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...
随机推荐
- OO_Unit1_Summary
经历了十分充实(痛不欲生)的三周不一样的码代码的生活,让我对通宵oo有了新的认识.往届学长学姐诚不欺我 第一次作业 需求分析 第一次需求非常简单(相比较后两次作业而言),仅为简单多项式求导,而且仅包含 ...
- Oracle-buffer cache过小导致SQL执行时间长
一.问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍 问题摆在这里,需要进行分析? 啥??? 版本11.2.0.4,都是单实例,主机系统硬件配置差不多. 二.对比SQL的执行效率 ...
- Windows搭建Linux子系统(WSL)详细教程
介绍 WSL(windows下的Linux子系统) Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式 ...
- 广告成本控制-PID算法
今天我们来聊聊广告成本控制中常用的PID算法. 0.PID算法简介 首先我们可以看下维基百科中给PID算法的定义:由比例单元(Proportional).积分单元(Integral)和微分单元(Der ...
- 玉帝传美猴王上天,大闹天宫之Java设计模式:命令模式
目录 示例 改进代码 命令模式 定义 意图 主要解决问题 何时使用 优缺点 玉帝传美猴王上天 命令模式和策略模式的区别 示例 系统需要设计一个命令行界面,用户可输入命令来执行某项功能,系统的功能会不断 ...
- day11.迭代器与生成器
一.迭代器 1.迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次 ...
- red and black(BFS)
Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 40685 Accepted: 22079 D ...
- Java集合知识总结
集合概述 集合:集合是Java中提供的一种容器,可以用来存储多个数据. 集合和数组的区别: (1)数组长度的是固定的,集合的长度是可变的. (2)数组中存储的都是同一类型的元素.集合存储的都是对象,对 ...
- RF-日期时间拼接(20191024_195355)
*** Test Cases *** testGetTime @{time}= Get Time year month day hour min sec ${sDate}= Catenate SEPA ...
- 关于Hexo博客NEXT主题(Gmini)站点图标不显示,显示错误的解决办法
关于Hexo博客NEXT主题(Gmini)站点图标不显示,显示错误的解决办法 最近闲着没事自己利用Hexo和Github搭了个博客,但是在NEXT(Gmini)主题优化时,出了很多错误,图标不显示 ...