使用 DateTimeFormatter 格式化
解析和格式化日期
使用 DateTimeFormatter 格式化 是 CoddyKit 上的免费 Java Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
将日期转换为文本
日期的默认 toString 会以 ISO 格式打印日期。若要控制显示形式,或解析非 ISO 文本,请使用 java.time.format 包中的 DateTimeFormatter。
自定义模式
请使用 ofPattern 创建格式化器。字母代表不同字段:yyyy 表示年份,MM 表示月份,dd 表示日期。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
System.out.println(date.format(f));
}
}格式化时间
时间模式使用 HH 表示 24 小时制的小时,使用 mm 表示分钟,使用 ss 表示秒。
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(14, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(time.format(f));
}
}组合日期与时间
一个模式可以同时包含日期和时间字段,用于表示 LocalDateTime。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
System.out.println(dt.format(f));
}
}文本月份名称
重复月份字母会改变其形式:MM 表示数字月份,MMM 表示类似“五月”的缩写名称,MMMM 表示完整名称。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);
System.out.println(date.format(f));
}
}星期名称
请使用 EEEE 表示完整的星期名称,使用 EEE 表示缩写形式。请提供一个 Locale,以确保语言显示可预测。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("EEEE, dd MMM", Locale.ENGLISH);
System.out.println(date.format(f));
}
}十二小时制
请使用小写的 hh 表示 12 小时制的小时,使用 a 表示 AM 或 PM 标记。
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(15, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
System.out.println(time.format(f));
}
}使用模式解析
同一个格式化器也可以将文本解析回日期。请将它作为 parse 的第二个参数传入。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("30/05/2026", f);
System.out.println(date.getMonth());
}
}处理错误输入
如果文本与模式不匹配,解析就会抛出 DateTimeParseException。请将有风险的解析放在 try-catch 异常捕获结构中。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
try {
LocalDate.parse("not a date", f);
} catch (DateTimeParseException e) {
System.out.println("Invalid date format!");
}
}
}内置格式化器
对于常见需求,您可以跳过模式,直接使用 DateTimeFormatter.ISO_DATE 等预定义格式化器。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.format(DateTimeFormatter.ISO_DATE));
}
}重复使用格式化器
DateTimeFormatter 是不可变且线程安全的,因此请创建一次并重复使用。当涉及名称时,请始终提供 Locale,以保持输出一致。
快速检查
请检验您对格式化的了解。
回顾
您已经学习了日期和时间格式化:
DateTimeFormatter.ofPattern用于定义自定义输出- 字母会映射到字段:
yyyy、MM、dd、HH、mm - 重复次数更多的字母会生成
MMMM和EEEE等文本形式 - 同一个格式化器可以解析文本,遇到错误输入时会抛出
DateTimeParseException - 格式化器是不可变且可重复使用的;涉及名称时请传入
Locale
用 AI 导师学习 Java — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 104
- 课程
- 374
常见问题解答
「使用 DateTimeFormatter 格式化」课时是免费的吗?
是的 — 「使用 DateTimeFormatter 格式化」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「使用 DateTimeFormatter 格式化」这节课中我会学到什么?
解析和格式化日期 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用 DateTimeFormatter 格式化」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- LocalDate、LocalTime、LocalDateTime
- Instant 与 Duration
- Period 与日期运算
- 使用 DateTimeFormatter 格式化