Date/Time 初級

スレッドセーフで不変なDateTimeFormatterで日付をフォーマットする。

✕ Pre-Java 8
// Not thread-safe!
SimpleDateFormat sdf =
    new SimpleDateFormat("yyyy-MM-dd");
String formatted = sdf.format(date);
// Must synchronize for concurrent use
✓ Java 8+
DateTimeFormatter fmt =
    DateTimeFormatter.ofPattern(
        "uuuu-MM-dd");
String formatted =
    LocalDate.now().format(fmt);
// Thread-safe, immutable
このコードに問題がありますか? お知らせください。
🛡️

スレッドセーフ

同期なしでスレッド間でフォーマッターを共有できます。

📋

組み込みフォーマット

標準書式にはISO_LOCAL_DATE、ISO_INSTANTなどが使えます。

🔒

不変性

static finalの定数として安全に保存できます。

旧来のアプローチ
SimpleDateFormat
モダンなアプローチ
DateTimeFormatter
JDKバージョン
8
難易度
初級
日付のフォーマット
利用可能

JDK 8(2014年3月)以降、広く利用可能

DateTimeFormatterはSimpleDateFormatと異なり、不変でスレッドセーフです。定数として保存して共有できます。ISO_LOCAL_DATEなどの定義済みフォーマッターも一般的な書式に利用できます。

共有 𝕏 🦋 in