2017-06-14 70 views
4

我有簡單的Java對象與日期字段:爪哇 - 日期,格式,時區和春季啓動默認

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") 
private Date date; 

當我調查與調試器的日期我看到:

Wed Jun 14 00:00:00 BST 2017 

但有一次我跟Spring bootcontroller回到我得到它:

"date": "2017-06-13 23:00:00" 
  1. 什麼導致差異?
  2. 爲什麼Java將日期視爲BST
  3. Java Date類是否包含時區信息或長格式的純時間戳?
  4. Spring boot使用UTC格式默認情況下序列化DTO到JSON?
+2

在調試器中,您會看到默認的Date.toString輸出,請閱讀https://codeblog.jonskeet.uk上的更多信息。2017/04/23/all-about-java-util-date/ –

+1

日期類不支持時間區域,並且始終以UTC爲單位。偶爾,UTC可能會顯示爲BST,即「英國標準時間」。 –

回答

1

java.util.Date沒有時區信息(只有long時間戳),但它使用系統的默認時區在toString()方法 - 你可以找到關於這個here的詳細信息(如在評論中已經建議)。

只需檢查TimeZone.getDefault()的值。它可能是Europe/London - 由於現在夏季的倫敦,這個時區的簡稱(用於Date.toString())爲BST

作爲輸出表明,春天是可能使用UTC(如UTC2017-06-13 23:00:00BST2017-06-14 00:00:00)。