问题:在实际开发中后端要求需要UTC格式 2022-11-30T16:00:00.000Z

           而我拿到的格式是中国标准时间或2022-12

解决思路:把拿到的时间转为时间戳,在进行转格式

一、时间转换为时间戳

// 北京时间:2021-11-18 22:14:24
/* 时间yyyy-MM-dd HH:mm:ss转为时间戳 */
timeToTimestamp(time) {
    let timestamp = Date.parse(new Date(time).toString());
    //timestamp = timestamp / 1000; //时间戳为13位需除1000,时间戳为13位的话不需除1000
    // console.log(time + "的时间戳为:" + timestamp);
    return timestamp;
    //2021-11-18 22:14:24的时间戳为:1637244864707
},

Date.parse()分析一个包含日期的字符串,函数的返回值为Number类型,返回该字符串所表示的日期与 1970 年 1 月 1 日午夜之间相差的毫秒数。

二、时间戳转化为时间

// 时间戳:1637244864707
/* 时间戳转换为时间 */
timestampToTime(timestamp) {
  timestamp = timestamp ? timestamp : null;
  let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
  let Y = date.getFullYear() + '-';
  let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
  let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  return Y + M + D + h + m + s;
}

三、时间字符串转换为时间

let str = '2021年12月10日 09:27';
let replacedStr = str.replace('年', '-').replace('月', '-').replace('日', '');
console.log(replacedStr); //2021-12-10 09:27
let parsedDate = new Date(replacedStr);
console.log(parsedDate); //Fri Dec 10 2021 09:27:00 GMT+0800 (中国标准时间)

四、中国标准时间转化为UTC时间

用上面的方法先转换为时间戳,再用toISOString() 方法转换为UTC格式

 this.readData.month = this.timeToTimestamp(this.readData.month)
 // console.log("转为时间戳之后的month",this.readData.month)
 let d = new Date(this.readData.month);
 // console.log("dddd1111",d)
 d = d.toISOString()
 // console.log("转为UTC格式",d)

同理:转换为中国标椎时间

          先转时间戳,再用toUTCString() 方法转换

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐