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