やりたかったこと
vuejs-datepicker
でPOSTした日時から、サーバーサイドで日付を取得する
問題の概要
vuejs-datepicker
はタイムゾーンまで含めてデータを出力する- Jacksonはフォーマット設定をしなければ受け取った日時をGMT基準(=日本時間-9時間)に変換し、それを
LocalDate
に変換する - このため、サーバーサイドが受け取った
LocalDate
が日本時間の9時間前(= 時間によっては昨日)になった
補足
- 自分のやっていた環境では、
vuejs-datepicker
の出力するデフォルト時間は日本時間で9時に設定されており、サーバーサイドで時間は利用していなかった - このため、日本時間で9時未満が出力されるような特定の操作をしなければ症状が再現できなかった
対策
- 本来はJacksonが解釈する日時のフォーマットを決定し、設定しておくべき
- 日付しか必要なく、応急的な対処でよいのであれば、時間情報を無くして(e.g. ハイフン区切り:
2019-01-01
)POSTすればズレることは無くなる
結論
- 日時扱うときは日時表現のフォーマットや設定にまで気を配った方がよい