1. 程式人生 > >【java中時間轉換】,當MM變成了mm,當DD變成了dd,會發生什麼事?

【java中時間轉換】,當MM變成了mm,當DD變成了dd,會發生什麼事?

記自己一次無知的寫法,導致專案產生一個異常。下面拿出例項:

我負責接收介面傳遞過來的引數,做相應的轉換,出入資料庫中,一個時間的通過字串的形式傳遞過來,這個時間是24小時制,我的轉化如下:

JSONObject params = new JSONObject();
String scanTime = params.getString("scanTime");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd  hh:mm:ss");

 測試都是上午測試的,結果就出現了一個問題,中午12點掃描的東西,顯示是0點,我就鬱悶了,就查看了一下1.8-API

H和h的時間制度是不一樣,一個是12小時制,一個是24小時制度,心裡不禁感嘆java設計的真全面,只怪自己太low,缺乏相關的知識。

還有特別需要注意的是,DD和dd表示的也是不一樣的,下面詳細解釋一下:

日期和時間模式
字母 日期或時間元素 表示 例項
G 年代標誌符 Text AD
y Year 1996:96
Y Year 2009;09
M Month July;Jul;07
L 年月(獨立形式) Month July;Jul;07
w 一年中第幾個星期 Number 27
W 一月中第幾個星期 Number 2
D 一年中的第幾天 Number 189
d 一月中的第幾天 Number 10
F 一月中第幾個星期 Number 03
E 星期數(星期一.......星期日) Text 星期日
u 星期數(1 =星期一,7,星期日) Number 7
a 上午 / 下午 標記符 Text PM
H 時 一天中的小時數(0-23) Number 0
k 時 一天中的小時數(1~24) Number 24
K am/pm 中的小時數(0-11) Number 0
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘的秒數(當前分鐘的秒數) Number 55
S 毫秒數(當前秒的毫秒數) Number 978
z 時區 CST
Z 時區 =0800
X 時區 +08

大家在使用SimpleDateFormat時,千萬要注意大小寫,特別是M\m、D\d、S\s、H\h的時間轉換。 自己出錯,引以為戒。如有不當,懇請指教!