用GregorianCalendar定义一个日期,注意其中的月为0-11,日为1-31,比如以下代码:
Calendar calendar=new GregorianCalendar(1900,0,0);
Date time = calendar.getTime();
System.out.println("time = " + time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d");
String format = sdf.format(time);
System.out.println("format = " + format);
输出的实际为:
time = Sun Dec 31 00:00:00 UTC 1899
format = 1899/12/31
要想输出为1900年1月1日,在new对象时应为
Calendar calendar=new GregorianCalendar(1900,0,1);
另外,POI读取日期时,得到的是一个字符串类型的数字;其实在Excel中查看的也是一个数字
此时要想处理成正确的时间格式,就要用到上面的GregorianCalendar类了;但是new对象时,日要用-1。比如:
String excelStrDate = "44414";
Calendar calendar = new GregorianCalendar(1900, 0, -1);
int intDays = Integer.parseInt(excelStrDate);
Date date = DateUtils.addDays(calendar.getTime(), intDays);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d");
String format = sdf.format(date);
System.out.println("format = " + format);
输出为:
format = 2021/8/6