我有一個簡單的服務,將一個日期作爲一個字符串(其他字段),並將其保存到mySql數據庫。我正在使用Hibernate的Spring Boot。 如果我張貼的日期與{"expenseDate":"04/02/2017"}
傑克遜映射後的日期是「2017-04-01 19:00:00」。順便說一句,如果我查看數據庫中的行,日期就像我期望的那樣是「2017-04-02」。當我查詢服務時,json中返回的日期是正確的,但是當我從數據庫轉儲出行時,它們都會返回正確的日期減去六個小時。春季休眠不需要的時區調整
我住在中央時區,所以我的猜測是數據庫中的日期是UTC,春天因爲處於中央時間而需要六個小時。
控制器:
@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