前端js读取excel、xlsx文件日期被转为数字,日期格式转换

记录一下,日常debug

网上最普遍的方法

function formatDate(numb, format) { const time = new Date((numb - 1) * 24 * 3600000 + 1); time.setYear(time.getFullYear() - 70) const year = time.getFullYear() ; const month = time.getMonth() + 1 ; const date = time.getDate() - 1 ; return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date) }

但是亲测这个方法有误差,算出来的时间有可能会少一天,比如我excel里面输入的是2022/03/08,转换数字为44628.
转换出来确是2022/03/07

正确的算法应该是:
function formatDate(numb, format) { const old = numb - 1; const t = Math.round((old - Math.floor(old)) * 24 * 60 * 60); const time = new Date(1900, 0, old, 0, 0, t) const year = time.getFullYear() ; const month = time.getMonth() + 1 ; const date = time.getDate() ; return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date) }

posted @ 2021-09-09 18:38  喜洋洋咯  阅读(3843)  评论(0)    收藏  举报