@DateTimeFormatと@NumberFormatの使い方徹底解説!

こんにちは!今回は、Spring Frameworkでデータのフォーマットに使用されるアノテーション、@DateTimeFormatと@NumberFormatについて詳しく解説します。これらのアノテーションを使えば、日付や数値を簡単に適切な形式に変換・表示することができます。


@DateTimeFormatとは?

@DateTimeFormatは、日付や時間の形式を指定するためのアノテーションです。これにより、文字列から日付や時間に変換する際や、日付データを表示する際のフォーマットを指定できます。

たとえば、yyyy-MM-dd形式の文字列をLocalDate型に変換する際に@DateTimeFormatを使用します。

基本的な使い方

public class User {

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthDate;

    // ゲッターとセッター
}

このコードでは、birthDateフィールドに対してyyyy-MM-dd形式で入力された文字列をLocalDate型に変換します。日付データの入力がこの形式に従っている必要があるため、入力ミスを防ぐことができます。


パターンの指定方法

pattern属性で日付フォーマットを指定できます。よく使うパターンは以下のとおりです。

  • yyyy-MM-dd:年-月-日
  • dd/MM/yyyy:日/月/年
  • HH:mm:ss:時:分:秒(時間指定)

他にも、時間やタイムゾーンを含むパターンも指定可能です。


フォーマット例

@DateTimeFormat(pattern = "dd/MM/yyyy")
private LocalDate joinDate;

この例では、dd/MM/yyyy形式の日付文字列をLocalDateに変換します。たとえば、「25/12/2023」のように日付を入力すると、それがLocalDateとして適切に処理されます。


@NumberFormatとは?

@NumberFormatは、数値のフォーマットを指定するアノテーションです。これにより、数値の表示形式を統一することができ、特に通貨やパーセントのフォーマットに便利です。

たとえば、数値を通貨形式(¥1,000)やパーセント形式(50%)に変換・表示する際に使われます。

基本的な使い方

public class Product {

    @NumberFormat(style = NumberFormat.Style.CURRENCY)
    private BigDecimal price;

    // ゲッターとセッター
}

このコードでは、priceフィールドに通貨形式が適用され、表示時には「¥1,000.00」のようにフォーマットされます。


スタイルの指定方法

style属性で使用できるフォーマットスタイルには、以下の3種類があります。

  • NumberFormat.Style.NUMBER:通常の数値(例:1,000)
  • NumberFormat.Style.CURRENCY:通貨形式(例:¥1,000.00)
  • NumberFormat.Style.PERCENT:パーセント形式(例:50%)

カスタムフォーマットの使用

pattern属性を使用することで、カスタムの数値フォーマットも指定できます。

@NumberFormat(pattern = "#,###.##")
private BigDecimal customPrice;

この例では、数値がカンマ区切り(例:1,234.56)で表示されます。小数点以下の桁数も調整できます。


@DateTimeFormatと@NumberFormatの応用例

@DateTimeFormatと@NumberFormatは、複数のフィールドで同時に使うことも可能です。例えば、以下のように日付と数値のフィールドをフォーマットするコードが書けます。

public class Invoice {

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate invoiceDate;

    @NumberFormat(style = NumberFormat.Style.CURRENCY)
    private BigDecimal totalAmount;

    // ゲッターとセッター
}

このコードでは、invoiceDateは「yyyy-MM-dd」形式で日付を受け取り、totalAmountは通貨形式で表示されます。


おわりに

@DateTimeFormatと@NumberFormatを使えば、日付や数値のフォーマットを簡単に指定でき、ユーザーフレンドリーな入力や表示を実現できます。今回は基本的な使い方から応用例まで紹介しましたので、ぜひ実際にコードを書いてみてください!

もっと詳しく知りたい方は、Spring公式ドキュメントを見てみてくださいね。

他の記事が見たい方はこちら!↓↓↓

@Primaryの使い方と引数を徹底解説!【初心者向け】

@PathVariableの使い方と引数を徹底解説!【初心者向け】

@RequestBodyの使い方と引数を徹底解説!【初心者向け】

@RequestParamの使い方と引数を徹底解説!【初心者向け】

@RestControllerの使い方と引数を徹底解説!【初心者向け】

タイトルとURLをコピーしました