JDK1.8自带时间工具类LocalDate的简单使用

使用前须知 :

1丶因LocalDate是不变量类型, 所以需重新定义变量赋值
2丶取时间值精确到毫秒值 HH:mm:dd.sss

下面直接贴部分测试使用代码 :
/*当前日期,不包括时分秒*/
        LocalDate today = LocalDate.now();
        System.out.println("今日日期: " + today);
        System.out.println("获取年: " + today.getYear());
        System.out.println("获取月: " + today.getMonth());
        System.out.println("获取日: " + today.getDayOfMonth());
        /*
        【打印值】
        今日日期: 2021-03-22
        获取年: 2021
        获取月: MARCH
        获取日: 22
        */

        /*自定义日期*/
        LocalDate dateA = LocalDate.of(2021,3,22);
        System.out.println("自定义日期: " + dateA);
        /*
        【打印值】
        自定义日期: 2021-03-22
        */

        /*判断日期*/
        System.out.println("判断日期是否相等: " + today.equals(dateA));
        /*
        【打印值】
        判断日期是否相等: true
        */

        /*检查像生日周期性时间*/
        MonthDay birthday = MonthDay.of(dateA.getMonth(),dateA.getDayOfMonth());
        System.out.println("你的生日日期: " + birthday);
        MonthDay currentMonthDay = MonthDay.from(today);
        System.out.println("现在的日期: " + currentMonthDay);
        System.out.println(currentMonthDay.equals(birthday) ? "是你的生日" : "你的生日还没有到");
        /*
        【打印值】
        你的生日日期: --03-22
        现在的日期: --03-22
        是你的生日
        */

        /*判断当前时间,不包括日期*/
        LocalTime todayTime = LocalTime.now();
        System.out.println("当前时间为: " + todayTime);
        /*
        【打印值】
        当前时间为: 12:17:50.836
        */

        /*计算往后的时间*/
        System.out.println("3小时后的时间为: " + todayTime.plusHours(3));
        System.out.println("一周后的日期为: " + today.plus(1, ChronoUnit.WEEKS));
        System.out.println("一年前的日期为: " + today.minus(1, ChronoUnit.YEARS));
        System.out.println("一年后的日期为: " + today.plus(1, ChronoUnit.YEARS));
        /*
        【打印值】
        3小时后的时间为: 15:17:50.836
        一周后的日期为: 2021-03-29
        一年前的日期为: 2020-03-22
        一年后的日期为: 2022-03-22
        */

        /*获取时间戳*/
        System.out.println("代替System.currentTimeInMillis: " + Clock.systemUTC().millis());
        System.out.println("代替TimeZone.getDefault(): " + Clock.systemDefaultZone().millis());
        System.out.println("Instant类有一个静态工厂方法now()会返回当前的时间戳: " + Instant.now().toEpochMilli());
        /*
        【打印值】
        代替System.currentTimeInMillis: 1616386670836
        代替TimeZone.getDefault(): 1616386670836
        */

        /*日期判断*/
        LocalDate dateB = LocalDate.of(2020,3,22);
        System.out.println("之前的日期: " + dateB.isBefore(dateA));
        System.out.println("之后的日期: " + dateB.isAfter(dateA));
        /*
        【打印值】
        之前的日期: true
        之后的日期: false
        */

        /*转换时区时间*/
        ZoneId america = ZoneId.of("America/New_York");
        LocalDateTime localtDateAndTime = LocalDateTime.now();
        ZonedDateTime dateAndTimeInNewYork  = ZonedDateTime.of(localtDateAndTime, america);
        System.out.println("特定时区中的当前日期和时间: " + dateAndTimeInNewYork.toString());
        /*
        【打印值】
        特定时区中的当前日期和时间: 2021-03-22T14:12:45.750-04:00[America/New_York]
        */

        /*如何表示信用卡到期这类固定日期 和 闰年判断*/
        YearMonth currentYearMonth = YearMonth.now();
        System.out.println("现在日期为: " + currentYearMonth + ", 这个月总天数为: " + currentYearMonth.lengthOfMonth());
        YearMonth creditCardExpiry = YearMonth.of(2019, Month.FEBRUARY);
        System.out.println("你的信用卡到期日期为: " + creditCardExpiry);
        System.out.println(today.isLeapYear() ? "2021是闰年" : "2021不是闰年");
        /*
        【打印值】
        现在日期为: 2021-03, 这个月总天数为: 31
        你的信用卡到期日期为: 2019-02
        2021不是闰年
        */

        /*计算两个日期之间的天数和月数*/
        LocalDate dateC = LocalDate.of(2021, 5, 20);
        Period periodToNextJavaRelease = Period.between(today, dateC);
        System.out.println("从今天到我的生日还有几个月: " + periodToNextJavaRelease.getMonths() + "个月");
        /*
        【打印值】
        从今天到我的生日还有几个月: 1个月
        */

        /*自定义格式化日期*/
        String dayAfterTommorrow = "20210322";
        LocalDate formatted = LocalDate.parse(dayAfterTommorrow, DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println(dayAfterTommorrow + " 格式化后的日期为: "+formatted);

        LocalDateTime dateD = LocalDateTime.now();
        DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //日期转字符串
        String str = dateD.format(format1);
        System.out.println("日期转换为字符串: " + str);
        DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //字符串转日期
        LocalDate date2 = LocalDate.parse(str,format2);
        System.out.println("日期类型: " + date2);
        /*
        【打印值】
        20210322 格式化后的日期为: 2021-03-22
        日期转换为字符串: 2021-03-22 14:53:50
        日期类型: 2021-03-22
        */
使用感

1丶在一些场景下使用起来还是比较方便的
2丶代码严谨性大家还是大可以信任,所以使用起来没什么顾虑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值