Java8中计算日期时间差

一.简述

在Java8中,我们可以使用以下类来计算日期时间差异:

11.Period 22.Duration 33.ChronoUnit

二.Period类

主要是Period类方法getYears(),getMonths()和getDays()来计算.

示例:

1package insping; 2 3import java.time.LocalDate; 4import java.time.Month; 5import java.time.Period; 6 7public class Test { 8 9 public static void main(String[] args) { 10 LocalDate today = LocalDate.now(); 11 System.out.println("Today : " + today); 12 LocalDate birthDate = LocalDate.of(1993, Month.OCTOBER, 19); 13 System.out.println("BirthDate : " + birthDate); 14 15 Period p = Period.between(birthDate, today); 16 System.out.printf("年龄 : %d 年 %d 月 %d 日", p.getYears(), p.getMonths(), p.getDays()); 17 } 18}

结果:

1Today : 2017-06-16 2BirthDate : 1993-10-19 3年龄 : 23728

三.Duration类

提供了使用基于时间的值(如秒,纳秒)测量时间量的方法。
示例:

1package insping; 2 3import java.time.Duration; 4import java.time.Instant; 5 6public class Test { 7 8 public static void main(String[] args) { 9 Instant inst1 = Instant.now(); 10 System.out.println("Inst1 : " + inst1); 11 Instant inst2 = inst1.plus(Duration.ofSeconds(10)); 12 System.out.println("Inst2 : " + inst2); 13 14 System.out.println("Difference in milliseconds : " + Duration.between(inst1, inst2).toMillis()); 15 16 System.out.println("Difference in seconds : " + Duration.between(inst1, inst2).getSeconds()); 17 18 } 19}

结果:

1Inst1 : 2017-06-16T07:46:45.085Z 2Inst2 : 2017-06-16T07:46:55.085Z 3Difference in milliseconds : 10000 4Difference in seconds : 10

四.ChronoUnit类

ChronoUnit类可用于在单个时间单位内测量一段时间,例如天数或秒。
以下是使用between()方法来查找两个日期之间的区别的示例。

1package insping; 2 3import java.time.LocalDate; 4import java.time.Month; 5import java.time.temporal.ChronoUnit; 6 7public class Test { 8 9 public static void main(String[] args) { 10 LocalDate startDate = LocalDate.of(1993, Month.OCTOBER, 19); 11 System.out.println("开始时间 : " + startDate); 12 13 LocalDate endDate = LocalDate.of(2017, Month.JUNE, 16); 14 System.out.println("结束时间 : " + endDate); 15 16 long daysDiff = ChronoUnit.DAYS.between(startDate, endDate); 17 System.out.println("两天之间的差在天数 : " + daysDiff); 18 19 } 20}

结果:

1开始时间 : 1993-10-19 2结束时间 : 2017-06-16 3两天之间的差在天数 : 8641

T

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

java8 时间类与Date类的相互转化

java8时间类与Date类的相互转化在转换中,我们需要注意,因为java8之前Date是包含日期和时间的,而LocalDate只包含日期,LocalTime只包含时间,所以与Date在互转中,势必会丢失日期或者时间,或者会使用起始时间。如果转LocalDateTime,那么就不存在信息误差。//Date与Instant的相互转化

java8 日期类库基本使用

java8日期类库基本使用publicstaticvoidmain(Stringargs){/java比较两个日期的差年月日等/DateTimeFormatterdateTimeFormatter

Java8 LocalDate计算两个日期的间隔天数

Java8新增了java.time包,提供了很多新封装好的类,使我们可以摆脱原先使用java.util.Time以及java.util.Calendar带来的复杂。其中LocalDate正是本文中使用的可以帮助计算两个日期的间隔天数的类。(其它常用的还有LocalTime,Clock,Instant等,本文不赘述)话不多说,上代码!L

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

在Java8以前,日期和时间处理一直被广大java程序员抱怨太难用,首先是java.util和java.sql中,都包含Date类,如果要处理java.text.DateFormat类处理。同时java.util.Date中既包含了日期,又包含了时间,所以java8新的日期和时间库,很好的解决了以前日期和时间类的很多弊端。并且也借鉴了第