Java8新特性 --- 日期API

本文介绍了JDK8对日期和时间处理的重大改进,包括使用Instant代替java.util.Date,LocalDate、LocalTime和LocalDateTime替代Calendar,以及DateTimeFormatter替代SimpleDateFormat。示例代码展示了如何创建、操作和格式化日期时间,以及如何处理时区和毫秒转换。此外,还提到了DateTimeFormatter类用于日期时间的格式化和解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK8之前与JDK8中日期、时间相关类的对应

JDK8之前JDK8中
java.util.Date 和 java.sql.DateInstant
SimpleDateFormatDateTimeFormatter
calendarLocalDate、LocalTime、LocalDateTime

LocalDate、 LocalTime. LocalDateTime 的使用

	@Test
    public void test1(){

        // now()∶获取当前的日期、时间、日期+时间
        LocalDate localDate = LocalDate.now(); 
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println(localDate); //2021-10-18
        System.out.println(localTime); //09:18:21.819
        System.out.println(localDateTime); //2021-10-18T09:18:21.819

        // of()∶设置指定的年、月、日、时、分、秒。没有偏移量
        LocalDateTime localDateTime1 = LocalDateTime.of(2021, 4, 15, 9, 15, 20);
        System.out.println(localDateTime1); //2021-04-15T09:15:20

        //getXxx()获取相关的属性
        System.out.println(localDateTime.getDayOfMonth()); //18
        System.out.println(localDateTime.getDayOfWeek()); //MONDAY
        System.out.println(localDateTime.getMonth()); //OCTOBER
        System.out.println(localDateTime.getHour()); //9
        System.out.println(localDateTime.getMinute()); //18

        //withXxx()设置相关的属性
        LocalDateTime localDateTime2 = localDateTime1.withDayOfMonth(22);
        System.out.println(localDateTime1); //2021-04-15T09:15:20
        System.out.println(localDateTime2); //2021-04-22T09:15:20

        // 不可变性
        LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
        System.out.println("-------"+localDateTime); //-------2021-10-18T10:01:37.443
        System.out.println(localDateTime3); //2022-01-18T10:01:37.443

        LocalDateTime localDateTime4 = localDateTime.minusDays(6);
        System.out.println(localDateTime4); //2021-10-12T10:01:37.443
    }

instant的使用 瞬时点

	@Test
    public void test2(){
        // now();获取本初子午线对应的标准时间
        Instant instant = Instant.now();
        System.out.println(instant); //2021-10-18T02:03:12.320Z

        // 添加时间的偏移量
        OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8)); // 设置时区为东八区
        System.out.println(offsetDateTime); //2021-10-18T10:03:12.320+08:00

        // toEpochMiLli():获取自1970年1月1日0时0分秒(UTC)开始的毫秒数 --> Date.getTime();
        long l = instant.toEpochMilli();
        System.out.println(l); //1634522592320

        // 'ofEpochMilli():通过给定的毫秒数,获取Instant实例 --> Date(Long millis)
        Instant instant1 = Instant.ofEpochMilli(1618822854909L);
        System.out.println(instant1); 2021-04-19T09:00:54.909Z
    }

DateTimeFormatter 类: 格式化、解析

	@Test
    public void test3(){
//        重点:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss E”)
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss E");
        // 格式化
        String str = timeFormatter.format(LocalDateTime.now());
        System.out.println(str); //2021-10-18 10:06:22 星期一

        // 解析
        TemporalAccessor parse = timeFormatter.parse("2021-04-19 05:26:05 星期一");
        System.out.println(parse); //{SecondOfMinute=5, HourOfAmPm=5, MicroOfSecond=0, NanoOfSecond=0, MinuteOfHour=26, MilliOfSecond=0},ISO resolved to 2021-04-19
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xingxing...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值