1. 程式人生 > >java轉換excel表格中的時間格式,比如excel表格中時間格式異常

java轉換excel表格中的時間格式,比如excel表格中時間格式異常

經常見到excel表格中的日期和時間前面少了個0,比如正常應該是01/02/2016,但是在excel表格中顯示就是1/2/2016;這是由於excel表格中的時間格式受作業系統格式的控制,在控制面板--區域和語言中:


java在讀取這些時間的時候,由於程式通常情況只支援幾種常用的格式,比如yyyy/MM/dd或者MM/dd/yyyy等,因此要將這些奇葩的時間格式轉換成通用格式:

    /**
     * @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();
	}
返回的值是一個標準的時間格式,如:yyyy/MM/dd 00:00:00