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

如何使用MUI X Date Picker向接口仅发送YYYY-MM-DD格式日期

MUI X Date Picker 的 onChange 回调默认返回的是 Date 类型对象,axios 发送请求时会自动调用 Date.toISOString() 方法转为带时间的 ISO 格式字符串,这就是你接口收到 2021-11-04T01:07:00.000Z 格式的原因。你只需要在提交前把 Date 对象格式化为 YYYY-MM-DD 格式即可,两种常用方案如下:

方案1:onChange 阶段直接存格式化后的字符串到 state

你项目已经引入了 DateFnsUtils,可以直接用 date-fns 提供的 format 方法处理日期:

// 先引入format方法
import { format } from 'date-fns'

// 组件代码修改如下
<MuiPickersUtilsProvider utils={DateFnsUtils} >
  <DatePicker 
    value={this.state.open_Date}       
    format="dd/MM/yyyy" // 这里仅控制输入框显示格式,不影响提交值
    disableFuture
    views={["year", "month", "date"]} 
    onChange={date => {
      // 先判断date是否合法,避免空值报错
      if (!date) return
      const formattedDate = format(date, 'yyyy-MM-dd')
      this.handleUserIDChange(formattedDate)
    }}
  />
</MuiPickersUtilsProvider>

方案2:提交时临时格式化,state 保留 Date 类型

如果你需要在 state 中保留原始 Date 对象做其他逻辑处理,可以在调用 axios 提交前单独处理日期字段:

// 提交前处理请求参数
const reqParams = {
  ...this.state,
  open_Date: this.state.open_Date ? format(this.state.open_Date, 'yyyy-MM-dd') : null
}
// 调用axios提交
axios.post('你的接口地址', reqParams)

注意事项

如果需要避免时区偏移导致的日期错误,可以使用 UTC 模式转换日期:formatISO(date, { representation: 'date' })


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:04