LocalDate.of() 是 Java 8 引入的用于按年、月、日直接创建不可变 LocalDate 对象的静态工厂方法,参数需满足 year(任意整数)、month(1–12 或 Month 枚举)、dayOfMonth(符合该月实际天数),否则抛 DateTimeException。

LocalDate.of() 是 Java 8 引入的 java.time.LocalDate 类中用于**直接按年、月、日创建不可变日期对象**的静态工厂方法,用法简洁且线程安全。
基本语法与参数要求
方法签名如下:
public static LocalDate of(int year, int month, int dayOfMonth)三个参数必须满足以下条件,否则抛出 DateTimeException:
- year:支持负数(公元前)和超大年份(如 10000),但通常用 1–9999
-
month:可传
int(1 表示一月,12 表示十二月)或Month枚举(如Month.JANUARY) - dayOfMonth:需符合该年月的实际天数(例如 2024 年 2 月最多 29 天;2023 年 2 月最多 28 天)
常用调用方式示例
✅ 推荐写法(清晰、不易出错):
立即学习“Java免费学习笔记(深入)”;
LocalDate date2 = LocalDate.of(2023, Month.OCTOBER, 1); // 2023-10-01
⚠️ 注意避免错误写法:
// ❌ 错误:月份用 0 起始(这是旧 API Calendar 的习惯)LocalDate wrong = LocalDate.of(2024, 0, 1); // 抛异常:Invalid value for MonthOfYear (valid values 1 - 12)
和其他创建方式对比
除了 of(),LocalDate 还提供其他常用构造方式,适用不同场景:
-
LocalDate.now():获取当前系统日期(不含时分秒) -
LocalDate.parse("2024-03-15"):从标准格式字符串解析(ISO_LOCAL_DATE 格式) -
LocalDate.parse("15/03/2024", DateTimeFormatter.ofPattern("dd/MM/yyyy")):自定义格式解析 -
LocalDate.ofYearDay(2024, 60):用年份 + 当年第几天创建(2024-02-29)
小提示:验证日期有效性
LocalDate.of() 内部会自动校验日期合法性。例如:
无需手动判断闰年或每月天数,框架已处理。


















