【java中時間轉換】,當MM變成了mm,當DD變成了dd,會發生什麼事?
阿新 • • 發佈:2018-12-16
記自己一次無知的寫法,導致專案產生一個異常。下面拿出例項:
我負責接收介面傳遞過來的引數,做相應的轉換,出入資料庫中,一個時間的通過字串的形式傳遞過來,這個時間是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的時間轉換。
自己出錯,引以為戒。如有不當,懇請指教!