1. 程式人生 > >java 使用XmlPullParser解析Excel2007中日期格式的轉換

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);
}