java8 LocalDate 作者:马育民 • 2022-04-07 20:49 • 阅读:10081 # 说明 用来处理 日期 的类,不包含 时间,默认的格式是 `yyyy-MM-dd` # 创建对象 ### 当前日期 ``` LocalDate date = LocalDate.now(); System.out.println(date); ``` ### 指定日期 ``` LocalDate date=LocalDate.of(2020,8,20); ``` # 获取年月日 ``` System.out.println(date.getYear()); System.out.println(date.getMonthValue()); System.out.println(date.getDayOfMonth()); ``` # 格式化成字符串 通过 `DateTimeFormatter` 格式化 `DateTimeFormatter`是 **线程安全** 的,比 `SimpleDateFormat` 格式化时间更好 ### 方式一 ``` LocalDate date=LocalDate.now(); DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd"); String str=date.format(df); System.out.println(str); ``` ### 方式二 ``` LocalDate date=LocalDate.now(); DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd"); String str=df.format(date); System.out.println(str); ``` # 将字符串解析成对象 ``` DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date=LocalDate.parse("2020-04-07",df); System.out.println(date); ``` # 日期计算 计算后,返回结果,**原对象不变** ### 加法 返回计算后的结果 ``` // 明年 localDate.plusYears(1); // 下个月 localDate.plusMonths(1); // 下个星期 localDate.plusWeeks(1); // 明天 localDate.plusDays(1); ``` ### 减法 ``` // 去年 localDate.minusYears(1); // 上个月 localDate.minusMonths(1); // 上个星期 localDate.minusWeeks(1); // 昨天 localDate.minusDays(1); ``` ### 案例 ``` LocalDate date=LocalDate.now(); //返回计算后的结果 LocalDate res=date.plusMonths(1); String s=res.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(s); ``` # 判断 ``` // 是否相等 localDate.isEqual(localDate1); // 是否早于 localDate.isBefore(localDate1); // 是否晚于 localDate.isAfter(localDate1); // 是否是闰年 localDate.isLeapYear(); ``` # 时间设置 返回新对象,原对象不变 ``` // 设置年 localDate.withYear(2020); // 设置月份 localDate.withMonth(5); // 设置日期 localDate.withDayOfMonth(20); localDate.withDayOfYear(100); ``` # 检查像生日这种周期性事件 ``` // 假设今天是 2020-05-20 LocalDate date1 = LocalDate.now(); MonthDay currentMonthDay = MonthDay.from(date1); LocalDate date2 = LocalDate.of(1996,5,20); MonthDay birthday = MonthDay.from(date2); if(currentMonthDay.equals(birthday)){ System.out.println("今天是你的生日"); } ``` # 判断是否闰年 ``` boolean leapYear = LocalDate.now().isLeapYear(); System.out.println(leapYear); ``` 感谢: https://blog.csdn.net/qidasheng2012/article/details/106426769 https://www.cnblogs.com/wang-yaz/p/10757937.html 原文出处:http://malaoshi.top/show_1IX35cvGoLhj.html