Java String 转 Date
在 Java 中,将 String 转换为 Date 有多种方法,具体取决于你使用的 Java 版本和日期格式要求,以下是几种常见的实现方式:

(图片来源网络,侵删)
使用 SimpleDateFormat (Java 8 之前)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
public static void main(String[] args) {
String dateString = "2025-05-15 14:30:00";
// 定义日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 解析字符串为Date对象
Date date = sdf.parse(dateString);
System.out.println("转换后的Date: " + date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
使用 Java 8 的 DateTimeFormatter (推荐)
Java 8 引入了新的日期时间 API,推荐使用 java.time 包中的类:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class StringToDateJava8 {
public static void main(String[] args) {
String dateString = "2025-05-15 14:30:00";
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 解析为LocalDateTime
LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);
System.out.println("转换后的LocalDateTime: " + dateTime);
// 如果需要转换为java.util.Date
Date date = java.sql.Timestamp.valueOf(dateTime);
System.out.println("转换后的Date: " + date);
}
}
使用 java.sql.Date
import java.sql.Date;
public class StringToSqlDate {
public static void main(String[] args) {
String dateString = "2025-05-15";
// 直接转换为java.sql.Date
Date sqlDate = Date.valueOf(dateString);
System.out.println("转换后的java.sql.Date: " + sqlDate);
}
}
处理不同时区
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class StringToDateWithTimeZone {
public static void main(String[] args) {
String dateString = "2025-05-15T14:30:00+08:00";
DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, formatter);
System.out.println("转换后的ZonedDateTime: " + zonedDateTime);
// 转换为Instant
System.out.println("转换为Instant: " + zonedDateTime.toInstant());
}
}
注意事项
- 线程安全:
SimpleDateFormat不是线程安全的,在多线程环境中应该每次创建新实例或使用ThreadLocal。 - 格式匹配:确保字符串格式与指定的格式完全匹配,否则会抛出异常。
- Java 8+ 推荐:尽可能使用 Java 8 的
java.timeAPI,它更现代、更易用且线程安全。 - 时区处理:处理日期时间时要注意时区问题,特别是涉及跨时区应用时。
常见格式示例
| 字符串格式 | 格式模式 |
|---|---|
| 2025-05-15 | yyyy-MM-dd |
| 15/05/2025 | dd/MM/yyyy |
| 20250515 | yyyyMMdd |
| 2025-05-15 14:30:00 | yyyy-MM-dd HH:mm:ss |
| 2025-05-15T14:30:00 | yyyy-MM-dd'T'HH:mm:ss |
| 2025-05-15 14:30:00+08:00 | yyyy-MM-dd HH:mm:ssXXX |
选择哪种方法取决于你的具体需求和项目使用的 Java 版本,对于新项目,强烈推荐使用 Java 8 的 java.time API。

(图片来源网络,侵删)
