900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java 转换EXCEL Duble格式时间为指定格式日期字符串

Java 转换EXCEL Duble格式时间为指定格式日期字符串

时间:2023-12-11 00:19:55

相关推荐

Java 转换EXCEL Duble格式时间为指定格式日期字符串

Excel的日期存储类型为Double类型,是一个长度为5的数字,例如日期为-01-01,到处到xml或者数据库中就变成了4

种种原因我们并不能再借助Excel来转化这个不直观的数据格式,于是这里我们只考虑已经是这种数据类型,怎样还原成自己想要的日期格式

一种现成的解决方案是使用org.apache.poi.ss.usermodel.DateUtil.getJavaDate(),来将double数值转换为java.util.Date类,再转换为字符串的日期格式,但一个得不偿失的问题是,如果你的系统中并没有用到POI框架的话,仅仅为了转换个日期格式是不值得的

这里仿照实现方法提供一个java方法

/*** 转换Excel日期为指定格式日期字符串* @param value 需要转换的值* @param format 指定日期格式 yyyy-MM-dd HH:mm:ss* @return 转换后的日期*/public static String conversionDoubleToDateStr(double value,String format){boolean use1904windowing = false;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(format);System.out.println(s.format(date));return s.format(date);}

测试是否满足需求

public static void main(String[] args) {String datestr = conversionDoubleToDateStr(4,"yyyy-MM-dd");System.out.println(datestr);//-01-01}

测试成功,不需要借助其他jar文件,即可实现Excel日期格式转换。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。