如果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')
},

 

最终转换结果:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐