java如何把字符串转换成日期
使用 SimpleDateFormat 类转换字符串到日期
SimpleDateFormat 是 Java 中用于格式化和解析日期的传统类。通过定义日期模式(如 yyyy-MM-dd),可以将字符串解析为 Date 对象。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) throws Exception {
String dateString = "2023-10-25";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = formatter.parse(dateString);
System.out.println(date); // 输出解析后的日期对象
}
}
使用 DateTimeFormatter 和 LocalDate(Java 8+)
Java 8 引入了 java.time 包,推荐使用 LocalDate 和 DateTimeFormatter 进行更现代的日期处理。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String dateString = "2023-10-25";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(dateString, formatter);
System.out.println(localDate); // 输出格式化的日期
}
}
处理时区信息(带时间戳的字符串)
如果字符串包含时间或时区信息,可以使用 LocalDateTime 或 ZonedDateTime 进行解析。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String dateTimeString = "2023-10-25 15:30:45";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println(dateTime); // 输出日期和时间
}
}
注意事项
- 异常处理:解析可能抛出
ParseException(SimpleDateFormat)或DateTimeParseException(DateTimeFormatter),需捕获或声明抛出。 - 线程安全:
SimpleDateFormat非线程安全,建议每次创建新实例或使用ThreadLocal。DateTimeFormatter是线程安全的。 - 模式匹配:日期格式必须与字符串严格匹配,否则解析失败。例如,
"2023/10/25"需对应模式"yyyy/MM/dd"。







