私は、(他のフィールドの中で)文字列として日付をとり、それをmySqlデータベースに保存する単純なサービスを持っています。私はHibernateでSpring Bootを使用しています。 {"expenseDate":"04/02/2017"}
というJSONを投稿した場合、ジャクソンマッピング後にキャプチャされる日付は「2017-04-01 19:00:00」です。春休みの不要なタイムゾーン調整
ちなみに、データベースの行を見ると、期待通りの日付は「2017-04-02」です。私がサービスに問い合わせると、jsonに戻ってくる日付は正しいですが、データベースから行をダンプすると、正しい日から6時間を返します。
私はセントラルタイムゾーンに住んでいるので、データベースの日付はUTCで、春は中央時間であるために6時間かかると思います。
コントローラー:
@PostMapping("/expenses")
public ResponseEntity<Expense> submitExpense(@RequestBody Expense expense) throws BadHttpRequest {
expenseService.saveExpense(expense);
return new ResponseEntity<>(expense, HttpStatus.CREATED);
}
エンティティ:
@Entity
public class Expense {
@Id
@GeneratedValue
Integer id;
Double cost;
String location;
String expenseType;
String description;
@JsonFormat(pattern = "MM/dd/yyyy")
Date expenseDate;
私は、日付フィールドに@JsonFormat(pattern = "MM/dd/yyyy", timezone = "UTC")
を試してみましたが、それは何も変わっていません。
また、日付部分を使用してビューから日付を作成して、サービスの長さとして渡しましたが、結果は同じです。明らかに私は非常に重大で、おそらく単純なものを見逃しています。
どのような考えですか?
JSON入力で04/02/2017を渡すと、どのタイムゾーンがその日付になるはずですか?あなたのサービスの消費者は、UTCで日付を渡すことになっていますか? –
おそらく私の部分で少しナイーブですが、私はちょうど変更なしでその日付の値を仮定していたので、渡されたものの値を持つ切り捨てられた日付です。そして、だから、私がやっていることは正しいのですが、何も追加することを除けば、オブジェクトを傍受するときに実際の値はオフになります – nbpeth