js将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式

功能说明

后台返回的日期数据:2019-04-07T16:00:00.000+0000 ,转换后应该是:2019-04-08

代码

var time1="2019-04-07T16:00:00.000+0000";

var time2=myTime(time1);

console.log("时间1="+time2);

console.log("时间2=="+formatDateTime(time2));

 

function myTime(date){
     var arr=date.split("T");
     var d=arr[0];
   var darr = d.split('-');

   var t=arr[1];
   var tarr = t.split('.000');
   var marr = tarr[0].split(':');

   var dd = parseInt(darr[0])+"/"+parseInt(darr[1])+"/"+parseInt(darr[2])+" "+parseInt(marr[0])+":"+parseInt(marr[1])+":"+parseInt(marr[2]);
 return dd;
}

 // 数字补0操作
function  addZero(num) {
    return num < 10 ? '0' + num : num;
} 

 function formatDateTime (date) {
        var time = new Date(Date.parse(date));
        time.setTime(time.setHours(time.getHours() + 8));
        var Y = time.getFullYear() + '-';
        var  M = this.addZero(time.getMonth() + 1) + '-';
        var D = this.addZero(time.getDate()) + ' ';
        var h = this.addZero(time.getHours()) + ':';
        var m = this.addZero(time.getMinutes()) + ':';
        var  s = this.addZero(time.getSeconds());
        return Y + M + D;
        // }
      }

其实最方便的还是让后端开发在时间字段上加上: 在返回给前端的model(VO)字段上加一个注解更方便

(@JsonFormat(shape=JsonFormat.Shape.STRING,pattern=”yyyy-MM-dd HH:mm:ss”,timezone=”GMT+8″))

第一种方法:

var time=”2018-05-19T08:04:52.000+0000″;

var d = new Date(time);

var times=d.getFullYear() + ‘-‘ + (d.getMonth() + 1) + ‘-‘ + d.getDate() + ‘ ‘ + d.getHours() + ‘:’ + d.getMinutes() + ‘:’ + d.getSeconds();

输出 2018-05-19 15:59:10

发现问题:

如果时间是09:00:00 ,你这样转之后显示的是9:0:0

     2018-05-19T00:00:00.000+0000

转换后:”2018-5-19 8:0:0″

解决办法(网友提供):加个判断就可以了 例如月(d.getMonth() + 1 < 10 ? “0” + (d.getMonth() + 1) : d.getMonth() + 1)

另一种办法:

   myFunction();
   function myFunction(){

       var dateee = new Date("2018-05-19T00:00:00.000+0000").toJSON();

// var dateee = new Date(“2017-07-09T09:46:49.667”).toJSON();

    var date = new Date(+new Date(dateee)+8*3600*1000).toISOString().replace(/T/g,' ').replace(/\.[\d]{3}Z/,'')  

       alert(date);
       console.log("时间2==="+date);

}

转换后:2018-05-19 08:00:00

有网友反馈:对于“2017-07-09”这种带“-”格式的日期使用+new Date(dateee)在ie下会报错,

解决办法:可以先转成“2017/07/09”格式的
————————————————
版权声明:本文为CSDN博主「qq_37164847」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37164847/article/details/80376480