使用前须知 :
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丶代码严谨性大家还是大可以信任,所以使用起来没什么顾虑