utamaro’s blog

誰かの役に立つ情報を発信するブログ

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")