问题:
从excel中读入的日期时间“变形”了。
excel时间特性:它是1900年开始,以天数计算时间到目前的总天数,以1开始为单位,以8点作为起始时间。
解决:
// 把excel文件中的日期格式的内容转回成标准时间
/**
* excel导入插件方法:excel时间格式化
* @param {*} numb 需要excel时间格式
* @param {*} format 转换分隔符
* @returns 标准时间格式
*/
export function formatExcelDate(numb, format = '/') {
const time = new Date((numb - 25567) * 24 * 3600000 - 5 * 60 * 1000 - 43 * 1000 - 24 * 3600000 - 8 * 3600000)
time.setYear(time.getFullYear())
const year = time.getFullYear() + ''
const month = time.getMonth() + 1 + ''
const date = time.getDate() + ''
if (format && format.length === 1) {
return year + format + month + format + date
}
return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
}
将excel表格中的中文key替换英文key:
/**
* excel导入插件方法:key中文转英文
* @param {*} results 需要转换的数据(需要数组)
* @param {*} maps 转换数据的中英映射关系(下边举例)
* @param {*} times 需要格式化的excel时间属性名(英文属性名数组)
* @returns
*/
export function transformKeys(results, maps, times = []) {
const newArr = []
results.forEach((item) => {
// 替换为key是英文的新对象,添加进数组
const _item = {}
for (const key in item) {
const enKey = maps[key]
if (times.includes(enKey)) {
// 格式化excel时间
_item[enKey] = formatExcelDate(item[key], '-')
} else {
_item[enKey] = item[key]
}
}
newArr.push(_item)
})
return newArr
}
// * @param {*} maps 转换数据的中英映射关系(下边举例)
const changeObj = {
入职日期: 'timeOfEntry',
姓名: 'username',
工号: 'workNumber',
手机号: 'mobile',
转正日期: 'correctionTime'
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容