日付の書式設定
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) {
// パターンが無効である
}チャレンジ
簡単formatDateという名前のメソッドを作成し、次の3つの引数を受け取るようにします。
- String(
dateStr):入力パターンで記述された日付 - String(
inputPattern):入力日付のパターン - String(
outputPattern):希望する出力パターン
このメソッドは次の処理を行います。
- 入力パターンを使って入力日付を解析する
- 出力パターンを使って書式設定する
- 次のパターンに対応する
- "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));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ