VUE中xslx解析excel日期格式问题

1.第一种方法

配置的readerData方法中const workbook = XLSX.read(data, { type: 'array' })

当excel上传日期时获取的为字符串,例如:excel文件中日期为2023/5/23,拿到的数据为45069

在导入数据前对数据做yyyy-MM-dd处理

复制代码
   /** 导入数据部分过滤器 */
   importFilter(batchSaveData){
       //这里执行需要过滤的信息
       for(var i=0;i<batchSaveData.length;i++){
           if( batchSaveData[i].buyDate){
               try {
                 batchSaveData[i].buyDate = this.formDate(batchSaveData[i].buyDate);
                 console.log(batchSaveData[i].buyDate);
               } catch (error) {
                   throw new Error("时间格式错误"); 
               }
           }
     
         }
       return  batchSaveData;
   },
   formDate(date){
     // 将Excel日期转换为JavaScript日期
     const jsDate = new Date((date - 25569) * 86400 * 1000);
     // 将JavaScript日期转换为指定格式:yyyy-MM-dd
     const year = jsDate.getFullYear();
     const month = String(jsDate.getMonth() + 1).padStart(2, '0');
     const day = String(jsDate.getDate()).padStart(2, '0');
     return `${year}-${month}-${day}`;
   },

1.第二种方法

配置的readerData方法中配置cellDates: true, dateNF: "yyyy-MM-dd HH:mm",可处理时间格式

复制代码
const workbook = XLSX.read(data, { type: 'array', cellDates: true, dateNF: "yyyy-MM-dd HH:mm" })

获取的日期:Mon May 22 2023 23:59:17 GMT+0800

但获取的格式少43秒,存入数据库中会少一天

处理方法:获取的日期+44秒

const timestamp = batchSaveDatai.buyDate.getTime() + (44 * 1000);

batchSaveDatai.buyDate = new Date(timestamp);

复制代码
    /** 导入数据部分过滤器 */
   importFilter(batchSaveData){
       //这里执行需要过滤的信息
       for(var i=0;i<batchSaveData.length;i++){
           if( batchSaveData[i].buyDate){
               try {
                 console.log(batchSaveData[i].buyDate);
                 const timestamp = batchSaveData[i].buyDate.getTime() + (44 * 1000);
                 batchSaveData[i].buyDate = new Date(timestamp);
                 batchSaveData[i].buyDate = this.parseTime(batchSaveData[i].buyDate,"{y}-{m}-{d}");
                 // batchSaveData[i].buyDate = this.formDate(batchSaveData[i].buyDate);
                 console.log(batchSaveData[i].buyDate);
               } catch (error) {
                   throw new Error("时间格式错误"); 
               }
           }
       }
       return  batchSaveData;
   },
相关推荐
java1234_小锋5 小时前
【技术专题】CSS3 网页技术 - CSS3 视觉增强
前端·css·css3
Dovis(誓平步青云)5 小时前
拖动关键帧角色就抽动,动画编辑器怎样补齐中间状态
开发语言·前端·javascript·机器学习·编辑器
lpfasd1235 小时前
pywebview与Electron
前端·javascript·electron
Data-Miner5 小时前
AI和Excel怎么结合才能真提效
人工智能·excel
行走的陀螺仪5 小时前
Claude Code 从入门到实战(一):安装、登录与第一个Vue项目
前端·javascript·vue.js
梦曦i6 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app x
Amos_Web6 小时前
Rspack 源码解析(三十四):rspack_hook 与宏系统如何用过程宏生成异步 Hook 与插件
前端
恋猫de小郭6 小时前
感人,Flutter 居然有了一个超实用提案,期待落地
android·前端·flutter
wordbaby6 小时前
为什么 Apifox 能调通,浏览器却报跨域?一次“CORS Error + 403”联调排坑实录
前端
2603_965896626 小时前
JavaScript 原型与原型链
开发语言·前端·javascript