java 日期时间 api 解析字符串为 localdate 的核心做法是使用 datetimeformatter 定义格式,并调用 localdate.parse() 方法。你需要先创建一个匹配目标字符串格式的格式化器实例,然后将其传入解析方法中。如果字符串格式与格式化器不匹配,程序会抛出 datetimeparseexception。

如何自定义格式解析特定日期的字符串
当字符串格式不是默认的 ISO-8601 格式时,必须显式指定 DateTimeFormatter。例如,解析 "2023-10-05" 这种 yyyy-MM-dd 格式的字符串,需要创建对应的格式化器并传入 parse 方法。这样做能确保解析器准确识别年、月、日的分隔符和顺序。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParser {
public static void main(String[] args) {
String dateString = "2023-10-05";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(dateString, formatter);
System.out.println(date); // 输出: 2023-10-05
}
}如何处理非标准或带时间的字符串解析
如果输入字符串包含时间部分(如 "2023-10-05T14:30:00"),直接解析为 LocalDate 会失败。此时应使用 DateTimeFormatter.ISO_LOCAL_DATE_TIME 先解析为 LocalDateTime,再提取日期部分。或者使用 DateTimeFormatterBuilder 构建更复杂的解析逻辑,忽略时间部分。
立即学习“Java免费学习笔记(深入)”;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateParserWithTime {
public static void main(String[] args) {
String dateTimeString = "2023-10-05T14:30:00";
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
LocalDateTime ldt = LocalDateTime.parse(dateTimeString, formatter);
LocalDate date = ldt.toLocalDate();
System.out.println(date); // 输出: 2023-10-05
}
}解析失败时会抛出什么异常
当字符串格式与 DateTimeFormatter 定义的模式不匹配时,LocalDate.parse() 会抛出 DateTimeParseException。这是一个运行时异常,无需强制捕获,但建议在业务代码中进行处理以避免程序崩溃。例如,输入 "2023/10/05" 而格式化器为 "yyyy-MM-dd" 会导致解析失败。


















