Menu
CoddyTech

日期格式化

本课属于 Coddy Java 学习旅程的“逻辑与流程”单元。第 58 课,共 59 课。

DateTimeFormatter 在 Java 中可以按不同格式设置日期和时间。它可以与 LocalDate、LocalTime 和 LocalDateTime 一起使用。

创建一个具有特定模式的格式化器:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

使用格式化器格式化日期:

LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);

运行上述代码后,formatted 中包含:

2024-03-15

将字符串解析为日期:

String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);

这两个步骤都可能失败。当模式本身无效时,DateTimeFormatter.ofPattern() 会抛出 IllegalArgumentException,例如 ofPattern("invalid"),因为 i 不是模式字母。当文本与模式不匹配或不是一个真实日期时,LocalDate.parse() 会抛出 DateTimeParseException,例如 "2024-13-45"。IllegalArgumentException 位于 java.lang 中,因此不需要导入:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // 文本与模式不匹配
} catch (IllegalArgumentException e) {
    // 模式无效
}
challenge icon

挑战

简单

创建一个名为 formatDate 的方法,它接受三个参数:

  1. 一个 String(dateStr):日期,按输入格式编写
  2. 一个 String(inputPattern):输入日期的格式
  3. 一个 String(outputPattern):所需的输出格式

该方法应执行以下操作:

  1. 使用输入格式解析输入日期
  2. 使用输出格式格式化日期
  3. 处理以下格式:
    • "basic":"yyyy-MM-dd"
    • "long":"MMMM d, yyyy"
    • "short":"MM/dd/yy"
    • "custom":实际的格式字符串

返回消息应为:

  • 如果日期无效:返回 "Invalid date format"
  • 如果格式无效:返回 "Invalid pattern"
  • 成功时:返回格式化后的日期

亲手试试

import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static String formatDate(String dateStr, String inputPattern, String outputPattern) {
        // 在这里编写你的代码
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateStr = scanner.nextLine();
        String inputPattern = scanner.nextLine();
        String outputPattern = scanner.nextLine();
        
        System.out.println(formatDate(dateStr, inputPattern, outputPattern));
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Java 在线编译器