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

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

种种原因我们并不能再借助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(42005,"yyyy-MM-dd");
		System.out.println(datestr);//2015-01-01
	}

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hongmin.shm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值