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

Posted 喜洋洋咯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端js读取excelxlsx文件日期被转为数字,日期格式转换相关的知识,希望对你有一定的参考价值。

记录一下,日常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)
    }`

以上是关于前端js读取excelxlsx文件日期被转为数字,日期格式转换的主要内容,如果未能解决你的问题,请参考以下文章

js 如何把字符串转化为日期

XLSX.js读取excel日期格式时 将数字转换为正常日期格式

Oracle时间一串数字转为日期格式

js字符串转化日期

js 如何把字符串转化为日期

js中如何将日期转化字符串