在 Java 中处理 yyyyMMdd 格式的日期,可以使用 java.time 包(Java 8+)或旧的 java.text.SimpleDateFormat(Java 7 及更早版本),以下是两种方法的详细说明和示例代码。

方法 1:使用 java.time(推荐,Java 8+)
java.time 是 Java 8 引入的现代日期时间 API,线程安全且功能强大。
将 yyyyMMdd 字符串解析为 LocalDate
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParseExample {
public static void main(String[] args) {
String dateString = "20251015"; // 格式:yyyyMMdd
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate date = LocalDate.parse(dateString, formatter);
System.out.println("解析后的日期: " + date); // 输出: 2025-10-15
}
}
将 LocalDate 格式化为 yyyyMMdd 字符串
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateFormatExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now(); // 当前日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String formattedDate = date.format(formatter);
System.out.println("格式化后的日期: " + formattedDate); // 输出类似: 20251015
}
}
方法 2:使用 SimpleDateFormat(Java 7 及更早版本)
SimpleDateFormat 是旧 API,但注意它不是线程安全的,应在多线程环境中谨慎使用。
将 yyyyMMdd 字符串解析为 Date
import java.text.SimpleDateFormat;
import java.util.Date;
public class OldDateParseExample {
public static void main(String[] args) {
String dateString = "20251015";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Date date = sdf.parse(dateString);
System.out.println("解析后的日期: " + date); // 输出类似: Mon Oct 15 00:00:00 CST 2025
} catch (Exception e) {
e.printStackTrace();
}
}
}
将 Date 格式化为 yyyyMMdd 字符串
import java.text.SimpleDateFormat;
import java.util.Date;
public class OldDateFormatExample {
public static void main(String[] args) {
Date date = new Date(); // 当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String formattedDate = sdf.format(date);
System.out.println("格式化后的日期: " + formattedDate); // 输出类似: 20251015
}
}
关键点说明
-
格式模式:
yyyy:4位年份(如2025)。MM:2位月份(10表示 10 月)。dd:2位日期(15表示 15 日)。- 注意区分
MM(月份)和mm(分钟)。
-
时区问题:
(图片来源网络,侵删)LocalDate不包含时区信息,适合仅处理日期的场景。Date对象包含时间戳,默认使用系统时区。
-
异常处理:
- 解析时如果字符串格式不匹配,会抛出
DateTimeParseException(java.time)或ParseException(SimpleDateFormat)。
- 解析时如果字符串格式不匹配,会抛出
示例:完整流程(字符串 ↔ 日期)
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateConversionExample {
public static void main(String[] args) {
// 字符串转日期
String input = "20251015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate date = LocalDate.parse(input, formatter);
// 日期操作(如加1天)
LocalDate nextDay = date.plusDays(1);
// 日期转字符串
String output = nextDay.format(formatter);
System.out.println("原始日期: " + input);
System.out.println("加1天后: " + output); // 输出: 20251016
}
}
- 推荐使用
java.time(Java 8+),代码更简洁且线程安全。 - 如果必须使用旧版 Java,确保
SimpleDateFormat在单线程中运行或通过synchronized保护。 - 始终验证输入字符串的格式是否符合预期,避免运行时异常。

