js读取excel中日期格式转换问题

时间:2025-02-17 08:01:24

方法一、

在使用js-xlsx插件来读取excel时,会将2018/10/16这种数据自动装换成48264.12584511.

所以需要自己手动再转换回来

// excel读取2018/01/01这种时间格式是会将它装换成数字类似于46254.1545151415 numb是传过来的整数数字,format是之间间隔的符号

1.方法①: 

    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      (() - 70)
      const year = () + ''
      const month = () + 1 + ''
      const date = () - 1 + ''
      if (format &&  === 1) {
        return year + format + month + format + date
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    },
(formatDate(42618, '/')) // 2016-9-5

2. 方法②:

//excel日期格式转换 numb为数字,format为拼接符“-”
    function formatDate(numb, format) {
        // 1. 第一种写法
        if (numb != undefined) {
            let time = new Date((numb - 1) * 24 * 3600000 + 1)
            (() - 70)
            let year = () + ''
            let month = () + 1 + ''
            let date = () + ''
            if (format &&  === 1) {
                return year + format + month + format + date
            }
            return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
        } else {
            return undefined;
        }

        // 2.  第二种写法
        let  time = new Date( (numb - 25567) * 24 * 3600000  - 
            5 * 60 * 1000 -
            43 * 1000 - 
            24 * 3600000 - 8 * 3600000 );

        let year = () + ''
        let month = () + 1 + ''
        let date = () + ''
        if (format &&  === 1) {
           return year + format + month + format + date
        }
        return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)

    }

方法二、时分秒转换:

function formatTime(numb, format) {
            var hourTmp = numb * 24;
            var hour = (hourTmp);
            var minuteTmp = hourTmp - hour;
            var minute = (minuteTmp * 60);
            return (hour < 10 ? '0' + hour : hour) + format + (minute < 10 ? '0' + minute : minute);
}

方法三、Js如何将一串数字转换为时间格式yyyy-MM-dd hh:mm:ss

var time='20190306214635'
(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/g, '$1-$2-$3 $4:$5:$6');

输出 

2019-03-06 21:46:35

方法四、

今天写了一个ajax请求,当获取对象中的某个日期属性时,发现打印出来是一串数字,例如:1394786876000。可能有人会有疑问了,明明是日期格式,为什么不返回日期,而返回一串数字呢?其实这串数字是个时间戳,也就是从格林威治时间1970年01月01日00时00分00秒起至返回的那个日期的总秒数。如何将时间戳转化为我们需要的格式呢。

在此只介绍一种简单的方法,也是我从网上找来的:

1、在js中先加载一下代码,不需要做任何修改

 =function(format)
  {
  var o = {
  "M+" : ()+1, //month
  "d+" : (), //day
  "h+" : (), //hour
  "m+" : (), //minute
  "s+" : (), //second
  "q+" : ((()+3)/3), //quarter
  "S" : () //millisecond
  }
  if(/(y+)/.test(format)) format=(RegExp.$1,
  (()+"").substr(4- RegExp.$));
  for(var k in o)if(new RegExp("("+ k +")").test(format))
  format = (RegExp.$1,
  RegExp.$==1? o[k] :
  ("00"+ o[k]).substr((""+ o[k]).length));
  return format;
  }

2、使用new Date(时间戳).format('yyyy-MM-dd')方法进行转化即可,返回的就是yyyy-MM-dd格式的值。

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:正在跳转