java 使用XmlPullParser解析Excel2007中日期格式的轉換
Excel2007在日期格式上是以double型別儲存的,例如日期為2018-06-13,在xml中表示為43264。
使用java解析excel的xml檔案時,會發現,獲取到的值依舊是43264,畢竟Excel還沒有幫你轉化成日期格式。
使用poi框架的話,裡面有個類的方法是DateUtil.getJavaDate(),可以將對應的double資料型別轉為字串形式的日期(不知道有沒記錯方法)
但是僅僅只需要轉化成日期格式,就要匯入一個如此龐大的框架,顯然也是浪費記憶體。因此我把內部的方法總結出來,如下:
呼叫:getDate(false,43264) -->2018-06-13
JAVA程式碼:
public String getDate(boolean use1904windowing,double value){
Log.d(TAG, "getDate: "+value);
int wholeDays = (int)Math.floor(value);
int millisecondsInDay = (int)((value - (double)wholeDays) * 8.64E7D + 0.5D);
Calendar calendar = new GregorianCalendar();
short startYear = 1900;
byte dayAdjust = -1;
if (use1904windowing) {
startYear = 1904;
dayAdjust = 1;
}else if (wholeDays < 61) {
dayAdjust = 0;
}
calendar.set(startYear, 0, wholeDays + dayAdjust, 0, 0, 0);
calendar.set(Calendar.MILLISECOND, millisecondsInDay);
if(calendar.get(Calendar.MILLISECOND) == 0) {
calendar.clear(Calendar.MILLISECOND);
}
Date date = calendar.getTime();
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
return s.format(date);
}