Java LocalDate的使用

一、API文档:

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html

二、常用方法

1.核心基准方法

//引入包
import java.time.LocalDate;
//获取当前日期--yyyy-mm-dd
LocalDate today = LocalDate.now()

2.常用方法

// 获取localDate对象
LocalDate date2 = LocalDate.of(2019, 12, 3);//2019-12-03
LocalDate date3 = LocalDate.parse("2019-11-10");//2019-11-10

//获取当前日期的年份
int year = today.getYear();
//获取当前日期的月份对象
Month month = today.getMonth();
//获取当前日期的月份,返回值为int
int monthValue = today.getMonthValue();

//当前日期在当前周的第几天
int value = today.getDayOfWeek().getValue();
//当前日期在当前月的第几天
int dayOfMonth = today.getDayOfMonth();
//当前日期在当前年的第几天
int dayOfYear = today.getDayOfYear();

/*以下方法的参数均为int类型*/
//修改当前日期的年份为1999年
LocalDate localDate = today.withYear(1999);
//修改当前日期的月份为5月
LocalDate localDate1 = today.withMonth(5);
//修改当前日期在当月的第24天
LocalDate localDate2 = today.withDayOfMonth(24);
//修改当前日期在当年的第100天
LocalDate localDate3 = today.withDayOfYear(100);

/*用于日期的增加计算,参数,类型均为long类型*/
//在当前日期的年份上增加1年
LocalDate localDate = today.plusYears(1);
//在当前日期的月份上增加1月
LocalDate localDate1 = today.plusMonths(1);
//在当前日期的周数上增加1周
LocalDate localDate2 = today.plusWeeks(1);
//在当前日期的天数上增加1天
LocalDate localDate3 = today.plusDays(1);

/*用于日期的减少计算,参数,类型均为long类型*/
//在当前日期的年份上减少1年
LocalDate localDate = today.minusYears(1);
//在当前日期的月份上减少1月
LocalDate localDate1 = today.minusMonths(1);
//在当前日期的周数上减少1周
LocalDate localDate2 = today.minusWeeks(1);
//在当前日期的天数上减少1天
LocalDate localDate3 = today.minusDays(1);

三、LocalDate 的格式化

//将LocalDate转化为String
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");
//获取当前日期
LocalDate today = LocalDate.now();
//格式化为yyyymmdd,返回类型为字符串类型
String todayStr = today.format(format);

//将String转化为LocalDate
String str = "20191203";
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//String转LocalDate
LocalDate date = LocalDate.parse(str,fmt);

 

### Java LocalDate 的用法和示例 `LocalDate` 是 Java 8 中引入的一个重要类,属于 `java.time` 包的一部分。它主要用于表示不带时间部分的日期(年、月、日)。以下是关于 `LocalDate` 的一些核心功能以及如何使用的例子。 #### 创建 LocalDate 实例 可以通过多种方式创建 `LocalDate` 对象: 1. **当前日期** 使用静态方法 `now()` 可以获取当前系统的日期。 ```java LocalDate today = LocalDate.now(); System.out.println(today); ``` 2. **指定日期** 使用 `of(year, month, day)` 方法可以创建特定日期的对象。 ```java LocalDate specificDate = LocalDate.of(2023, 10, 5); System.out.println(specificDate); // 输出:2023-10-05 ``` 3. **解析字符串** 如果有一个日期格式的字符串,可以直接通过 `parse(String date)` 方法将其转换为 `LocalDate`。 ```java LocalDate parsedDate = LocalDate.parse("2023-10-05"); System.out.println(parsedDate); // 输出:2023-10-05 ``` #### 获取日期中的具体信息 `LocalDate` 提供了许多便捷的方法来访问其内部存储的信息: ```java int year = today.getYear(); // 当前年的数值 Month month = today.getMonth(); // 返回 Month 枚举对象 int dayOfMonth = today.getDayOfMonth(); // 日的部分 DayOfWeek dow = today.getDayOfWeek(); // 星期几 long epochDay = today.toEpochDay(); // 自公元纪元以来的天数 System.out.println("Year: " + year + ", Month: " + month + ", Day: " + dayOfMonth + ", DOW: " + dow + ", Epoch Day: " + epochDay); ``` #### 修改日期 虽然 `LocalDate` 是不可变的,但它提供了许多方法返回修改后的副本: ```java // 减操作 LocalDate nextWeek = today.plusDays(7); // 增七天 LocalDate lastYear = today.minusYears(1); // 减少一年 // 替换单个字段 LocalDate modifiedDate = today.withYear(2025).withMonth(Month.DECEMBER.getValue()).withDayOfMonth(25); System.out.println(modifiedDate); // 输出:2025-12-25 ``` #### 判断日期关系 可以比较两个 `LocalDate` 是否相等或者判断它们的时间顺序: ```java boolean isEqual = today.isEqual(LocalDate.now()); // 检查是否相同 boolean isBefore = today.isBefore(LocalDate.of(2024, 1, 1)); // 检查今天是否早于某个日期 boolean isAfter = today.isAfter(LocalDate.of(2022, 1, 1)); // 检查今天是否晚于某个日期 ``` #### 处理异常情况 如果尝试创建非法的日期组合,则会抛出运行时异常 `DateTimeException`[^3]。例如: ```java try { LocalDate invalidDate = LocalDate.of(2023, 2, 30); // 非法日期 } catch (DateTimeException e) { System.out.println(e.getMessage()); } ``` --- ### 示例代码综合展示 以下是一个完整的示例程序,展示了上述提到的功能: ```java import java.time.LocalDate; import java.time.Month; public class LocalDateExample { public static void main(String[] args) { // 获取今天的日期 LocalDate today = LocalDate.now(); System.out.println("Today's Date: " + today); // 创建特定日期 LocalDate specificDate = LocalDate.of(2023, Month.OCTOBER, 5); System.out.println("Specific Date: " + specificDate); // 解析日期字符串 LocalDate parsedDate = LocalDate.parse("2023-10-05"); System.out.println("Parsed Date: " + parsedDate); // 访问日期组件 int year = today.getYear(); Month month = today.getMonth(); int day = today.getDayOfMonth(); System.out.println("Year: " + year + ", Month: " + month + ", Day: " + day); // 修改日期 LocalDate nextWeek = today.plusDays(7); System.out.println("Next Week: " + nextWeek); // 替换日期字段 LocalDate christmas2025 = today.withYear(2025).withMonth(Month.DECEMBER.getValue()).withDayOfMonth(25); System.out.println("Christmas 2025: " + christmas2025); // 比较日期 boolean isFuture = today.isAfter(LocalDate.of(2022, 1, 1)); System.out.println("Is Today After Jan 1, 2022? " + isFuture); try { // 尝试创建非法日期 LocalDate invalidDate = LocalDate.of(2023, 2, 30); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` --- ### 总结 `LocalDate` 类的设计充分体现了现代 API 的简洁性和功能性。它的不可变特性使得线程安全得以保障,而丰富的内置方法则极大地简化了开发者处理日期逻辑的工作量[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值