axios序列化 JSON.stringify转换Date不正确的解決方法

axios提交时间不正确原因:国际时区(UTC)和中国时区(GMT)的原因,东八区+8等于国际时区。
解决方法,重新Es5的Date.prototype.toJSON方法,代码如下:
转自王磊的博客

 axios.create({
  timeout: 60000,
  // withCredentials: true,

  headers: {
    'Content-Type': 'application/json',
  },
  transformRequest: [function (data) {
    function dateFormat(date, fmt) {
      if (null == date || undefined == date) return '';
      var o = {
        "M+": date.getMonth() + 1, //月份
        "d+": date.getDate(), //日
        "h+": date.getHours(), //小时
        "m+": date.getMinutes(), //分
        "s+": date.getSeconds(), //秒
        "S": date.getMilliseconds() //毫秒
      };
      if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
      for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
      return fmt;
    }

    Date.prototype.toJSON = function () {
      return dateFormat(this, 'yyyy-MM-dd')
    }
    data = JSON.stringify(data)
    return data
  }]

});

你可能感兴趣的:(vue)