0.背景

一个excel,需要前台解析成json格式,然后插入数据库。其他的一切正常,唯独时间的列被解析5位数字,然后插入数据库也变成了5位数字。

1.解决办法

提供两个解决办法。

办法一:

把excel单元格格式设置成文本格式,然后解析的时候就会被当成普通文本进行解析。

方法二:

如果单元格格式是日期格式,我们可以采用以下函数进行解析。

 formatExcelTime(num, format = '-') {
    num = Number(num);  // 强制类型转化,以防传来的值是字符串
    let millisecond = 0;  // 转化后的毫秒数
    if (num > 60) {
      millisecond = (num - 25569) * 60 * 60 * 24 * 1000;
    } else {
      millisecond = (num - 25568) * 60 * 60 * 24 * 1000;
    }
    let date = new Date(millisecond); // 根据转化后的毫秒数获取对应的时间
    let yy = date.getFullYear();
    let mm = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
    let dd = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    return yy + format + mm + format + dd;  // 返回格式化后的日期
  }

这样,我们给它传入一个5位数字,它就能解析出合适的日期了。

分类: 前端