java轉換excel表格中的時間格式,比如excel表格中時間格式異常
阿新 • • 發佈:2019-02-13
經常見到excel表格中的日期和時間前面少了個0,比如正常應該是01/02/2016,但是在excel表格中顯示就是1/2/2016;這是由於excel表格中的時間格式受作業系統格式的控制,在控制面板--區域和語言中:
java在讀取這些時間的時候,由於程式通常情況只支援幾種常用的格式,比如yyyy/MM/dd或者MM/dd/yyyy等,因此要將這些奇葩的時間格式轉換成通用格式:
返回的值是一個標準的時間格式,如:yyyy/MM/dd 00:00:00/** * @timeStr 從excel表格中讀取到的時間字串,比如"1/2/2016 1:23 PM" * @timeFormat 想要轉換成的時間格式,比如"yyyy/MM/dd"或者"MM/dd/yyyy" * */ private static String transformToNormal(String timeStr, String timeFormat) { SimpleDateFormat sm = new SimpleDateFormat(timeFormat+" "+"HH:mm:ss"); if(timeStr.contains("-")) {//針對時間格式為"dd-MMM-yy",這種格式不需要將-替換成"/"。 //邏輯:如果時間字串中第二個資料長度大於2,那麼肯定為MMM,即dd-MMM-yy if(timeStr.split(" ")[0].split("-")[1].length()>2) { return sm.format(Date.parse(timeStr)).toString(); } } timeStr = timeStr.split(" ")[0].replaceAll("\\.", "/").replaceAll("-", "/"); return sm.format(Date.parse(timeStr)).toString(); }