Java Academy · 课时

使用 DateTimeFormatter 格式化

解析和格式化日期

第 4 / 4 课13 个步骤

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. LocalDate、LocalTime、LocalDateTime
  2. Instant 与 Duration
  3. Period 与日期运算
  4. 使用 DateTimeFormatter 格式化
← 返回 Java Academy