JAVA JDK8时间类之Period、Duration、ChronoUnit的使用
- 1. Duration
- 1.1 简介:用于时间间隔(秒、毫秒、纳秒等)
- 1.2 案例
- 2. Period时间间隔(年、月、日)
- 2.1 简介
- 2.2 案例
- 3. ChronoUnit
- 3.1 简介
- 案例
- 4. 案例所有代码:
1. Duration
1.1 简介:用于时间间隔(秒、毫秒、纳秒等)
Duration类通过年月日时分秒相结合来描述一个时间量,最高精度是纳秒。时间量可以为正也可以为负,比如1天(86400秒0纳秒)、-1天(-86400秒0纳秒)、1年(31556952秒0纳秒)、1毫秒(0秒1000000纳秒)等。
1.2 案例
打印截图如下:
2. Period时间间隔(年、月、日)
2.1 简介
Period类通过年月日相结合来描述一个时间量,最高精度是天。时间量可以为正也可以为负,例如10年(10年0个月0天)、8个月(0年8个月0天)、34天(0年0月34天)等
2.2 案例
运行结果截图如下:
3. ChronoUnit
3.1 简介
ChronoUnit是java8提供的一个 枚举类,里面定义了很多表示日期/时间的枚举值,提供基于单元的访问来操纵日期,时间或日期时间, 通过实现TemporalUnit来扩展标准单元集。
案例
运行结果截图如下:
4. 案例所有代码:
public static void main(String[] args){
//案例需求:获取今天到中国近代史的开端的时间差
//1.获取本地现在的日期对象
LocalDateTime now = LocalDateTime.now();
//打印得到结果
System.out.println(now);//2023-07-16T20:21:41.586513200
//2.获取近代史开端的时间日期
LocalDateTime modernHistoryStart =LocalDateTime.of(1840,1,1,0,00,00);
//打印结果
System.out.println(modernHistoryStart);//1840-01-01T00:00
//利用Duration来获取相差的时间
Duration duration = Duration.between(modernHistoryStart,now);
System.out.println("相差的时间间隔对象:" + duration);//相差的时间间隔对象:PT1608884H21M41.5865132S
System.out.println("------------------------------");
System.out.println(duration.toDays());//获取两个时间差的天数//67036
System.out.println(duration.toHours()); //两个时间差的小时数//1608884
System.out.println(duration.toMinutes());//两个时间差的分钟数//96533062
System.out.println(duration.toMillis()); //两个时间差的毫秒数//5791983766970
System.out.println(duration.toNanos());//两个时间差的纳秒数//5791983766970625600
System.out.println("------------------------------------");
//需求:获取新中国成立到现在的时间间隔对象
//当前本地 年月日
LocalDate today = LocalDate.now();
System.out.println(today);
//生日的年月日
LocalDate birthDate = LocalDate.of(1949,10,1);
System.out.println(birthDate);
Period period = Period.between(birthDate,today);//第二个参数减第一个参数
System.out.println("相差的时间减隔对象:" + period);
System.out.println(period.getYears());
System.out.println(period.getMonths());
System.out.println(period.getDays());
System.out.println(period.toTotalMonths());
System.out.println("---------------------------------");
//需求:获取五四运动至今的时间对象,五四运动时间1919年5月4日
//当前的时间
LocalDateTime today1 = LocalDateTime.now();
System.out.println(today);
//生日时间
LocalDateTime birthDate1 = LocalDateTime.of(1949,5,4,0,0,0);
System.out.println(birthDate);
System.out.println("相差的年数:" + ChronoUnit.YEARS.between(birthDate1,today1));
System.out.println("相差的月数:" + ChronoUnit.MONTHS.between(birthDate1,today1) );
System.out.println("相差的周数:" + ChronoUnit.WEEKS.between(birthDate1,today1));
System.out.println("相差的天数:" + ChronoUnit.DAYS.between(birthDate1,today1));
System.out.println("相差的时数:" + ChronoUnit.HOURS.between(birthDate1,today1));
System.out.println("相差的分数:" + ChronoUnit.MINUTES.between(birthDate1,today1));
System.out.println("相差的秒数:" + ChronoUnit.SECONDS.between(birthDate1,today1));
System.out.println("相差的毫秒数:" + ChronoUnit.MILLIS.between(birthDate1,today1));
System.out.println("相差的纳秒数:" + ChronoUnit.NANOS.between(birthDate1,today1));
System.out.println("相差的微妙数:" + ChronoUnit.MICROS.between(birthDate1,today1));
System.out.println("相差的半天数:" + ChronoUnit.HALF_DAYS.between(birthDate1,today1));
System.out.println("相差的十年数:" + ChronoUnit.DECADES.between(birthDate1,today1));
System.out.println("相差的世纪(百年)数:" + ChronoUnit.CENTURIES.between(birthDate1,today1));
System.out.println("相差的千年数:" + ChronoUnit.MILLENNIA.between(birthDate1,today1));
System.out.println("相差的纪元数:" + ChronoUnit.ERAS.between(birthDate1,today1));