JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】

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 案例

JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第1张图片
打印截图如下:
JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第2张图片

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

2.1 简介

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

2.2 案例

JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第3张图片
运行结果截图如下:
JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第4张图片

3. ChronoUnit

3.1 简介

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

案例


运行结果截图如下:
JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第5张图片
JAVA JDK8时间类之Period、Duration、ChronoUnit的使用【详解】_第6张图片

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

你可能感兴趣的:(java,java,开发语言)