LocalDate.parse配合DateTimeFormatter可解析符合指定模式的字符串为LocalDate,格式模式须与输入完全匹配,否则抛出DateTimeParseException;支持ISO_LOCAL_DATE默认格式及自定义模式如"yyyy/MM/dd",需注意yyyy、MM、dd等字母含义及字面量书写,不支持时间与时区。

LocalDate.parse 配合 DateTimeFormatter 可以解析任意符合你指定模式的字符串为 LocalDate 对象,关键在于格式模式字符串要和输入字符串完全匹配,否则抛出 DateTimeParseException。
基础用法:用预定义或自定义格式器解析
LocalDate.parse 有两个常用重载方法:
- 直接传入符合 ISO_LOCAL_DATE(如 "2023-06-15")格式的字符串,无需 Formatter
- 传入自定义格式字符串 + 对应的 DateTimeFormatter 实例
例如解析 "2023/06/15":
LocalDate date = LocalDate.parse("2023/06/15", DateTimeFormatter.ofPattern("yyyy/MM/dd"));常见格式模式字母含义要记牢
DateTimeFormatter.ofPattern() 中的字母不是随意写的,比如:
立即学习“Java免费学习笔记(深入)”;
- yyyy 表示4位年份(推荐,避免 yy 的歧义)
- MM 表示两位月(01–12),小写 mm 是分钟,别混淆
- dd 表示两位日(01–31)
- MMM 表示缩写月份(如 "Jun"),需配合 Locale 使用
- 空格、斜杠、横线等字面量需原样写在模式串中
错误示例:用 "yyyy-mm-dd" 解析 "2023-06-15" 会把 06 当作分钟,导致解析失败。
处理带中文或特殊分隔符的日期
比如解析 "2023年06月15日" 或 "2023.06.15":
- "yyyy年MM月dd日" → 对应字符串必须严格含“年”“月”“日”三个汉字
- "yyyy.MM.dd" → 注意点号是普通字符,无需转义
如果月份是中文(如 "二〇二三年六月十五日"),则不能靠简单 pattern 解决,需先做字符串预处理或使用 DateTimeFormatterBuilder 自定义解析逻辑。
注意时区和时间部分
LocalDate 不含时间也不含时区,所以:
- 输入字符串里不能包含时间(如 "2023-06-15 12:00")——会报错
- 如果原始字符串含时间,应先用 LocalDateTime.parse 解析,再调用 toLocalDate()
- DateTimeFormatter 本身不处理时区,LocalDate 也不需要时区
想解析带时区的日期时间,请改用 ZonedDateTime 或 OffsetDateTime。


















