例如EXCEL中导入日期为2020/9/16,后台接收到的是 44090的5位数字(经实际计算是44088,有2天的误差),这个44088就是1900/01/01到2020/09/16的天数,需要将这个天数从1900/01/01加回去,获得EXCEL中的导入日期。
java代码:
//importParam 后台接收的值
//importDate 导入文档中的实际日期
if(importParam.equals("UNDEFINED") || importParam.equals("NULL")){
object.setDate(null);
}else{
if(importParam.length() == 5){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = dateFormat.parse("1900/01/01");
int day = Integer.parseInt(importParam);
Date importDate = DateCalculate.addDate(date, (day-2));
object.setDate(importDate);
}else{
object.setDate(dateFormat.parse(importParam));
}
}
/**
* 日期计算工具类
* @author WB
*/
public class DateUtil {
private static Calendar fromCal = Calendar.getInstance();
/**
* 按日期加天数得出全新日期
* @param date 需要加天数的日期
* @param day 需要增加的天数
* @return 新的日期
*/
public static Date addDate(Date date, int day) {
try {
fromCal.setTime(date);
fromCal.add(Calendar.DATE, day);
return fromCal.getTime();
} catch (Exception e) {
return null;
}
}
}
**注:**将导入日期改成文本格式则不会出现5位数字,但需要和客户特别说明。
**注2:EXCEL中真日期(yyyy/MM/dd、yyyy-MM-dd)转文本需要在前加英文单引号’,比如’2020/12/26,避免出现5位数字