Menu
CoddyTech

日付の書式設定

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 58/59。

Java の DateTimeFormatter を使うと、日付と時刻をさまざまなパターンで書式設定できます。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);

どちらの手順も失敗する可能性があります。パターン自体が無効な場合、たとえば ofPattern("invalid") のように i がパターン文字ではない場合、DateTimeFormatter.ofPattern() は IllegalArgumentException をスローします。テキストがパターンに一致しない場合、または実在する日付ではない場合、たとえば "2024-13-45" のような場合、LocalDate.parse() は DateTimeParseException をスローします。IllegalArgumentException は java.lang にあるため、インポートは不要です。

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // テキストがパターンに一致しない
} catch (IllegalArgumentException e) {
    // パターンが無効である
}
challenge icon

チャレンジ

簡単

formatDateという名前のメソッドを作成し、次の3つの引数を受け取るようにします。

  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オンラインコンパイラ