java 使用XmlPullParser解析Excel2007中日期格式的转换

Excel2007在日期格式上是以double类型存储的,例如日期为2018-06-13,在xml中表示为43264。

使用java解析excel的xml文件时,会发现,获取到的值依旧是43264,毕竟Excel还没有帮你转化成日期格式。

使用poi框架的话,里面有个类的方法是DateUtil.getJavaDate(),可以将对应的double数据类型转为字符串形式的日期(不知道有没记错方法)

但是仅仅只需要转化成日期格式,就要导入一个如此庞大的框架,显然也是浪费内存。因此我把内部的方法总结出来,如下:

调用:getDate(false,43264) -->2018-06-13

JAVA代码:

public String getDate(boolean use1904windowing,double value){
    Log.d(TAG, "getDate: "+value);
    
    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("yyyy-MM-dd");
    return s.format(date);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值