こんにちは!今回は、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公式ドキュメントを見てみてくださいね。
他の記事が見たい方はこちら!↓↓↓
@PathVariableの使い方と引数を徹底解説!【初心者向け】
@RequestBodyの使い方と引数を徹底解説!【初心者向け】