java8 新特性之日期时间处理 LocatDate、LocalTime、LocalDateTime、ZonedDateTime、DateTimeFormatter

发布时间 2023-09-21 20:46:41作者: 达摩院的BLOG

一、LocalDate、LocalTime、LocalDateTime 和常用API

1、LocalDate

public void test01(){
        //1.创建指定的日期
        LocalDate date1 = LocalDate.of(2021,05,06);
        System.out .println( "date1 = "+date1);

        //2.得到当前的日期
        LocalDate now = LocalDate .now();
        System.out.println("now = "+now);

        // 3.根据LocalDate对象获取对应的日期信息
        System.out.println("年:" + now.getYear());
        System.out.println("月:" + now.getMonth().getValue());
        System.out.println("日:" + now.getDayOfMonth());
        System.out.println("星期:" + now.getDayOfWeek().getValue());
    }

执行结果:

date1 = 2021-05-06
now = 2023-02-18
年:2023
月:2
日:18
星期:6

2、LocalTime

public void test02(){
        //1、得到指定时间
        LocalTime time = LocalTime.of(5, 26, 33, 2323);
        System.out.println("指定时间:"+time);

        //2、获取当前的时间
        LocalTime now = LocalTime.now();
        System.out.println("当前时间:"+now);

        //3、获取时间信息
        System.out.println("时"+now.getHour());
        System.out.println("分"+now.getMinute());
        System.out.println("秒"+now.getSecond());
        System.out.println("纳秒"+now.getNano());
    }

执行结果

指定时间:05:26:33.000002323
当前时间:17:12:48.909
时17
分12
秒48
纳秒909000000

3、LocalDateTimepublic void test03(){

//获取指定日期时间
        LocalDateTime dateTime = LocalDateTime.of(2023, 01, 01, 12, 12, 33, 1213);
        System.out.println("指定日期时间:"+dateTime);

        //获取当前的日期时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前日期时间:"+now);

        //获取日期时间信息
        System.out.println("年:" + now.getYear());
        System.out.println("月:" + now.getMonth().getValue());
        System.out.println("日:" + now.getDayOfMonth());
        System.out.println("星期:" + now.getDayOfWeek().getValue());
        System.out.println("时"+now.getHour());
        System.out.println("分"+now.getMinute());
        System.out.println("秒"+now.getSecond());
        System.out.println("纳秒"+now.getNano());
}

执行结果

指定日期时间:2023-01-01T12:12:33.000001213
当前日期时间:2023-02-18T17:14:30.547
年:2023
月:2
日:18
星期:6
时17
分14
秒30
纳秒547000000

4、日期的加减和比较(isBefore、isAfter、isEqual、compareTo) 

   省略......

二、DateTimeFormatter日期时间格式化

public void test01(){
    LocalDateTime now = LocalDateTime.now();
    // format 日期类型转换为日期字符串(使用系统默认格式)
    DateTimeFormatter isoLocalDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    String format = now.format(isoLocalDateTime);
    System.out.println(format);
    // format 日期类型转换为日期字符串(使用指定格式)
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String format1 = now.format(formatter);
    System.out.println(format1);

    // parse 日期字符串转换为日期类型(使用默认格式)
    LocalDateTime parse2 = LocalDateTime.parse("2023-02-18T17:25:48.267", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
    System.out.println(parse2);
    // parse 日期字符串转换为日期类型(使用指定格式)
    LocalDateTime parse = LocalDateTime.parse("1995-04-05 22:33:22", formatter);
    System.out.println(parse);
}
执行结果:
2023-02-18T17:30:03.752 2023-02-18 17:30:03 2023-02-18T17:25:48.267 1995-04-05T22:33:22

三、ZonedDate、ZonedTime、zonedDateTime

  LocalDate、LocalTime、LocalDateTime是不带时区的。 带时区的日期时间类分别为: ZonedDate、ZonedTime、zonedDateTime。其中每个时区都对应着ID,

ID的格式为“区域/城市”。例如︰ Asia/Shanghai等。

 

摘自:https://blog.csdn.net/weixin_41979002/article/details/129101910