js 日期格式在请求体中发生变化

传值时显示正常(后台要求的中国标准时间格式)

img


img

但是请求体中变成了toJson后的格式导致后台无法解析

img

有什么办法可以解决?

使用new Date()传时间戳默认会转成标准格式

写个函数转一下吧,原生js如下:


function formatDate(date) {
  const year = date.getFullYear();
  const month = ('0' + (date.getMonth() + 1)).slice(-2);
  const day = ('0' + date.getDate()).slice(-2);
  const hour = ('0' + date.getHours()).slice(-2);
  const minute = ('0' + date.getMinutes()).slice(-2);
  const second = ('0' + date.getSeconds()).slice(-2);
  
  return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}

// 测试
const date = new Date();
console.log(formatDate(date)); // 示例输出: "2022-02-22 22:22:22"

使用 Date.prototype.toISOString() 方法将日期对象格式化为标准的 ISO 8601 日期字符串,然后通过字符串的操作,提取所需要的部分,组成指定格式的日期字符串:
该函数会返回一个格式化后的字符串,格式为 YYYY-MM-DD HH:mm:ss。其中,slice() 方法用来保证数字位数不足两位时,前面填充一个 '0',以满足格式要求。

function formatChinaStandardDate(date) {
  var year = date.getFullYear();
  var month = ("0" + (date.getMonth() + 1)).slice(-2);
  var day = ("0" + date.getDate()).slice(-2);
  var hours = ("0" + date.getHours()).slice(-2);
  var minutes = ("0" + date.getMinutes()).slice(-2);
  var seconds = ("0" + date.getSeconds()).slice(-2);

  return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}

var data = {
  startLastModified: formatChinaStandardDate(startLastModified),
  endLastModified: formatChinaStandardDate(endLastModified),
};

var jsonData = JSON.stringify(data);


前端可以格式化时间,格式为 YYYY-MM-DD HH:mm:ss的字符串进行传值
后端toJson时,可以重写方法,加上时区进行转换。