1. 程式人生 > >new Date()導致日期增加了一天

new Date()導致日期增加了一天

如果 size http 最終 print ron 使用 方法 images

問題是:將字符串 "Sun Nov 12 14:00:00 CST 2017" 轉成Date類型

有一個簡單的方法是直接使用new Date(),但是這個方法對於某些日期的計算,會導致多增加一天

查看以下代碼

String ans ="Sun Nov 12 14:00:00 CST 2017";
Date date = new Date(ans);
System.out.println(date);

輸出結果是

Mon Nov 13 04:00:00 CST 2017

new Date(ans)這個方法,已經是不推薦的方法了,推薦使用 DateFormat.parse(String s)代替,關鍵就是如何設置格式化的格式了

Java格式化CST日期時間

日期格式化的格式為 "EEE MMM dd HH:mm:ss zzz yyyy"
CST是美國中部標準時間,所以還使用Locale.US

最終設置的日期格式化應該為:SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

String ans ="Sun Nov 12 14:00:00 CST 2017";
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date date 
= dateFormat.parse(ans); System.out.println(date);

附,日期格式化的規則

技術分享


註:格式化字符串中如果使用字符‘A’-‘Z’、‘a’-‘z’,需要使用單引號把它們括起來

new Date()導致日期增加了一天