excel中日期格式是数字,想转成java的日期格式,遇到了问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel中日期格式是数字,想转成java的日期格式,遇到了问题相关的知识,希望对你有一定的参考价值。
代码很简单,如下,可以直接运行:
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,
麻烦哪位大神看看,问题在哪里
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天
参考技术A cd.set(Calendar.MONTH, 0);cd.set(Calendar.DATE, -1);
试试。。。
如何将Excel日期快速转化为文本格式?
Excel表中日期格式其实是数值,有时候需要原样转成文本,有时候也要将文本转成日期。
我发现了一个方法,估计是最快的了。不需要用那一堆year() month()之类的函数。
-
快速将日期格式转化为文本格式
-
全选——右键——设置单元格格式,
可见,为日期格式。
如果在这里选择文本呢?
-
变成了数字,如果选择常规或者数值,都是数字。
我试很多办法,什么year函数,month函数,等等,麻烦要死。
终于我发现了一个很简便的办法。
-
倒回来,全选这个区域
-
点击 数据——分列
-
弹出一个框,直接点下一步
-
再点击下一步
-
选择文本。
点击完成
-
日期已经变成了如假包换的文本格式。
-
转回去的操作。也就是将文本格式转成日期格式。
同样点击分列,到第3步时,选择日期
点完成
-
又变成日期格式了。
以上是关于excel中日期格式是数字,想转成java的日期格式,遇到了问题的主要内容,如果未能解决你的问题,请参考以下文章