今早被這個問題搞了幾小時,最后還是慢慢的解決了。
一開始我從前端拿到的時間值是
1969-12-31T18:00:00.000Z
T代表是分隔符,Z代表是UTC 通用標准時,以z來標識。
一開始我直接用 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.parse(date); 會報錯,錯誤bug如下 Unparseable date " 1969-12-31T18:00:00.000Z"
一開始以為是時間精度的問題,因為我前端取的是 時和分 (值是 例如 10:00)
然后我發現,雖然我取得值是 10:00 ,不過控件取值的時候,也默認把年月秒給取回來了。
不過格式就是 1969-12-31T18:00:00.000Z 帶Z的,后端轉換很多次,都出錯了。不得己把這個時間格式復制百度,有了如下答案:
String date = "2016-08-15T16:00:00.000Z"; date = date.replace("Z", " UTC"); //注意是 空格+UTC System.out.println(date); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS Z"); //java Date 類型格式 Date d = sdf .parse(date); System.out.println(d); 輸出: 2016-08-15T16:00:00.000 UTC Tue Aug 16 00:00:00 CST 2016
代碼是網上復制的,這也防止以后忘記了,方便我查閱。
最后的總結:SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 給的參數長度和格式一定要跟"yyyy/MM/dd"一致,不然會報錯 Unparseable date 的錯誤!!
取的一部分原創地址
https://www.cnblogs.com/yanglf/p/5775224.html