0
点赞
收藏
分享

微信扫一扫

javaJDK8时间类3之Period、Duration、ChronoUnit

一:Duration

(1)简介:用于时间间隔(秒、毫秒、纳秒等)

 Duration类通过年月日时分秒相结合来描述一个时间量,最高精度是纳秒。时间量可以为正也可以为负,比如1天(86400秒0纳秒)、-1天(-86400秒0纳秒)、1年(31556952秒0纳秒)、1毫秒(0秒1000000纳秒)等。

  (2)案例

案例截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_时间间隔

打印截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_时间间隔_02

二 .Period时间间隔(年、月、日)

(1)简介

 Period类通过年月日相结合来描述一个时间量,最高精度是天。时间量可以为正也可以为负,例如10年(10年0个月0天)、8个月(0年8个月0天)、34天(0年0月34天)等

(2)案例

截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_时间间隔_03

运行结果截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_高精度_04

三:ChronoUnit

(1)简介:

ChronoUnit是java8提供的一个枚举类,里面定义了很多表示日期/时间的枚举值,提供基于单元的访问来操纵日期,时间或日期时间, 通过实现TemporalUnit来扩展标准单元集。

(2)举例说明

截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_高精度_05

运行结果截图如下:

                  javaJDK8时间类3之Period、Duration、ChronoUnit_时间间隔_06

                  javaJDK8时间类3之Period、Duration、ChronoUnit_时间间隔_07

四:案例所右代码如下:

 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));

举报

相关推荐

0 条评论