如果excel中内容如下,需要解析时间格式的内容
XLSX.read会默认解析为天数的时间戳字符串(从1900年算起到当前日期的天数)
如果想让xlsx帮我们解析时,就完成解析时间格式,只需要加上如下配置即可
const workbook = XLSX.read(data, {
type: "binary",
cellDates: true,//设为true,将天数的时间戳转为时间格式
});
再看转换后的结果(转成了中国标准时间)
我最终想要的是转换成自己想要的时间格式,需要moment工具类
import moment from "moment";
定义一个转换日期格式的方法(转成日期格式:YYYY-MM-DD)
注意的点:xlsx将excel中的时间内容解析后,会小一天
如2020/11/3,xlsx会解析成 Mon Nov 02 2020 23:59:17 GMT+0800 小了43秒
当再用moment转换成日期时:
Mon Nov 02 2020 23:59:17 GMT+0800 会转成2020/11/2 所以需要在moment转换后+1天
具体方法如下:
convertExcelDateFormat: function (row, columnName) {//日期转换
var date = row[columnName]
if (date === undefined || date === null || date === "") {
return null;
}
//非时间格式问题 返回Invalid date
let retFormat = moment(date).format('YYYY-MM-DD');
if (retFormat === "Invalid date"){
return retFormat;
}
return moment(date).add(1, 'days').format('YYYY-MM-DD')
},
最终转换结果: