excel中日期格式是数字,想转成java的日期格式,遇到了问题

代码很简单,如下,可以直接运行:publicstaticvoidmain(String[]args){Stringval="43060";inti=Integer.par... 代码很简单,如下,可以直接运行:
public static void main(String[] args) {
String val="43060";
int i=Integer.parseInt(val);
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cd=Calendar.getInstance();
cd.set(Calendar.YEAR,1900);
cd.set(Calendar.MONTH,1);
cd.set(Calendar.DATE,1);
cd.add(Calendar.DAY_OF_YEAR, i);
String STARTDATE=df.format(cd.getTime());
System.out.println("STARTDATE:"+STARTDATE);
}

但是算出来的日期是2017-12-24,
而实际,应该是2017-11-21,
麻烦哪位大神看看,问题在哪里
展开
 我来答
匿名用户
2017-11-22
展开全部
java读取excel时间格式出现数字的处理方法:
Excel存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化
1、数值格式(CELL_TYPE_NUMERIC):
1.纯数值格式:getNumericCellValue() 直接获取数据
2.日期格式:处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式
1).判断是否是日期格式:HSSFDateUtil.isCellDateFormatted(cell)
2).判断是日期或者时间
cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")
OR: cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd")
3.自定义日期格式:处理yyyy年m月d日,h时mm分,yyyy年m月等含文字的日期格式
判断cell.getCellStyle().getDataFormat()值,解析数值格式
yyyy年m月d日----->31
m月d日---->58
h时mm分--->32
举例说明:
private String parseExcel(Cell cell) {
String result = new String();
追问
能不能帮我下,我的这段代码,为什么算出来的结果不对,差了33天
匿名用户
2018-11-08
展开全部
cd.set(Calendar.MONTH, 0);
cd.set(Calendar.DATE, -1);
试试。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式