SpringBootでクライアントからの日付をLocalDateTimeで受け取る方法
クライアントから2018-10-19T10:10
という文字列を受け取ったときに、LocalDateTimeで受け取る方法を紹介します。
LocalDateTimeで受け取れると何かと便利です。Stringで受け取ると、それをDateに直したりするのが面倒なので、結構使える方法なのではないでしょうか。
それでは、javaのプログラムを紹介します。
プログラム
import lombok.Data; @Data public class SampleForm { @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) private LocalDateTime sampleDateTime; // '2018-10-19T10:10' }
controllerの実装の一部です
// /xxxx?sampleDateTime=yyyy-MM-ddTHH:mm みたいなリクエストを受け取る @RequestMapping(method = RequestMethod.GET) public String sampleView(SampleForm form) { return "sample"; }
@DateTimeFormatで指定しているDateTimeFormat.ISO.DATE_TIME
のパターンは、yyyy-MM-dd'T'HH:mm:ss.SSSXXX
と設定されています。
クライアントからのリクエスト方法は様々だと思いますが、大抵はjsでデータを作ったり、datetime-localを使ったり、datepickerを使ったりしていると思います。
それぞれのフォーマットに合わせてDateTimeFormat
を指定しても良いです。
そこらへんは仕様書を作って、フロント側との調整が必要になると思います。
独自のパターンを指定する場合は以下のように指定します。
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")