Java8新特性 时间日期API

Java8新特性 时间日期API

有不懂的可以去看看jdk8的接口文档

Instant时间戳

        //默认使用UTC时区
        Instant instant = Instant.now();
        System.out.println("当前时区时间戳: " + instant);
        OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
        System.out.println("当前8时区时间戳: " + offsetDateTime);

        //获取当前秒内的纳秒数
        System.out.println("获取当前秒内的纳秒数: "+instant.getNano());

结果

当前时区时间戳: 2023-02-03T06:20:31.750Z
当前北京时区时间戳: 2023-02-03T14:20:31.750+08:00
获取当前秒内的纳秒数: 750000000

基本操作

		LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        System.out.println("获取年: " + localDateTime.getYear());
        System.out.println("获取月: " + localDateTime.getMonthValue());
        System.out.println("获取天: " + localDateTime.getDayOfMonth());
        System.out.println("获取时: " + localDateTime.getHour());
        System.out.println("获取分: " + localDateTime.getMinute());
        System.out.println("获取秒: " + localDateTime.getSecond());

        LocalDateTime localDateTime2 = LocalDateTime.of(2023, 02, 03, 12, 10, 10);
        System.out.println("localDateTime2: " + localDateTime2);
        // 在当前时间加3年
        LocalDateTime localDateTime3 = localDateTime2.plusYears(3);
        System.out.println("在当前时间加3年: " + localDateTime3);
        // 在当前时间减1个月
        LocalDateTime localDateTime4 = localDateTime3.minusMonths(1);
        System.out.println("在当前时间减1个月: " + localDateTime4);

结果

2023-02-03T14:20:31.749
获取年: 2023
获取月: 2
获取天: 3
获取时: 14
获取分: 20
获取秒: 31
localDateTime2: 2023-02-03T12:10:10
在当前时间加3: 2026-02-03T12:10:10
在当前时间减1个月: 2026-01-03T12:10:10

Duration和Period

// 获取Unix元年(1907年1月1日午夜时分)
        Instant ins2 = Instant.ofEpochMilli(0);
        System.out.println("Unix元年: " + ins2);

        Instant instant1 = Instant.now();
        System.out.println("********************************");
        Thread.sleep(1000);
        Instant instant2 = Instant.now();
        System.out.println("instant1与iinstant2相差:" + Duration.between(instant1, instant2));
        System.out.println("********************************");

        LocalDate ld1 = LocalDate.now();
        LocalDate ld2 = LocalDate.of(2024, 05, 20);

        Period period = Period.between(ld1, ld2);

        System.out.println("当前时间与2024-05-20相差年:" + period.getYears());
        System.out.println("当前时间与2024-05-20相差月:" + period.getMonths());
        System.out.println("当前时间与2024-05-20相差日:" + period.getDays());

结果

Unix元年: 1970-01-01T00:00:00Z
********************************
instant1与iinstant2相差:PT1.007S
********************************
当前时间与2024-05-20相差年:1
当前时间与2024-05-20相差月:3
当前时间与2024-05-20相差日:17

操纵日期

// 获取收货时间
        LocalDateTime shanghai=LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println(shanghai);

        LocalDateTime nowLocalDateTime=LocalDateTime.now();
        System.out.println("当前时间:" + nowLocalDateTime);
        // 替换日期中的日数
        LocalDateTime nowLocalDateTime2=nowLocalDateTime.withDayOfMonth(19);
        System.out.println("替换nowLocalDateTime日期中的日数:" + nowLocalDateTime2);

        // 在nowLocalDateTime2的第一个星期天
        LocalDateTime nowLocalDateTime3=nowLocalDateTime2.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
        System.out.println("在nowLocalDateTime2的第一个星期天:" + nowLocalDateTime3);

        //查询下一个工作日
        LocalDateTime nextWorkingDay = nowLocalDateTime.with( l -> {
                    LocalDateTime localDateTime1= (LocalDateTime) l;
                    DayOfWeek dow = localDateTime1.getDayOfWeek();
                    if (dow.equals(DayOfWeek.FRIDAY)) {
                        return localDateTime1.plusDays(3);
                    } else if (dow.equals(DayOfWeek.SATURDAY)) {
                        return localDateTime1.plusDays(2);
                    } else {
                        return localDateTime1.plusDays(1);
                    }
                }
        );
        System.out.println("下一个工作日:"+nextWorkingDay);

结果

2023-02-03T14:20:32.769
当前时间:2023-02-03T14:20:32.769
替换nowLocalDateTime日期中的日数:2023-02-19T14:20:32.769
在nowLocalDateTime2的第一个星期天:2023-02-26T14:20:32.769
下一个工作日:2023-02-06T14:20:32.769
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值