You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React js中如何通过PUT请求向Rest API发送当前日期时间?

问题原因

你触发400错误的核心原因是Date()直接调用返回的是本地化的人类可读时间字符串,你的后端REST API的日期时间字段无法解析该格式,因此判定请求非法。
你打印的Sun Oct 03 2021 14:28:59 GMT+0500 (Pakistan Standard Time)属于非标准的本地化格式,绝大多数后端框架的日期时间序列化组件默认不支持该格式。

解决方案

方法1(通用优先选择)

使用标准ISO 8601格式的时间字符串,几乎所有主流后端框架(包括你日志中显示的Django REST Framework)都能直接解析该格式,修改代码如下:

updateOrderStatus = async(id,status) => {
        let data = new FormData();
        data.append('status',status );
        // 替换原有的Date()为new Date().toISOString()
        data.append('orderStartTime', new Date().toISOString());
        await api.put(`OrdersAPI/${id}/`, data);
        this.getNewOrders();
    }

toISOString()输出的格式为2021-10-03T09:28:59.000Z,是跨语言通用的标准时间格式。

方法2(适配后端特殊格式要求)

如果你的后端明确要求其他时间格式(比如YYYY-MM-DD HH:mm:ss的本地时间格式),可以自行格式化后再传输,示例代码如下:

// 自定义时间格式化函数
const formatLocalDate = (date) => {
  const padZero = (num) => num < 10 ? `0${num}` : num;
  return `${date.getFullYear()}-${padZero(date.getMonth()+1)}-${padZero(date.getDate())} ${padZero(date.getHours())}:${padZero(date.getMinutes())}:${padZero(date.getSeconds())}`;
}

updateOrderStatus = async(id,status) => {
        let data = new FormData();
        data.append('status',status );
        data.append('orderStartTime', formatLocalDate(new Date()));
        await api.put(`OrdersAPI/${id}/`, data);
        this.getNewOrders();
    }
额外排查点

如果修改后仍然返回400错误,可以按以下步骤排查:

  • 确认后端orderStartTime字段的属性要求,是否允许修改、是否有特殊时区限制
  • 打开浏览器控制台的「网络」标签,查看PUT请求实际提交的表单数据,确认参数名拼写正确、值的格式符合后端要求

内容的提问来源于stack exchange,提问作者user16137336

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:57:03