You need to enable JavaScript to run this app. React编辑表单中如何获取dd/mm/yyyy格式日期并支持日期选择器修改
优惠活动
大模型
产品
解决方案
定价
更多

React编辑表单中如何获取dd/mm/yyyy格式日期并支持日期选择器修改

问题根因

HTML原生date类型输入框仅支持YYYY-MM-DD格式的字符串作为绑定值,而MongoDB存储的是ISO 8601标准的完整时间字符串(如2021-07-22T00:00:00.000Z),两者格式不匹配会导致日期无法正常回显。

解决方案

回显阶段格式转换

给TextField赋值前,将从MongoDB获取的ISO日期转换为YYYY-MM-DD格式,建议使用UTC日期方法取值,避免时区偏移导致的日期显示偏差:

// 工具函数:ISO 8601日期转input date支持的格式
const formatDateToInput = (isoDate) => {
  if (!isoDate) return ''
  const date = new Date(isoDate)
  const year = date.getUTCFullYear()
  const month = String(date.getUTCMonth() + 1).padStart(2, '0')
  const day = String(date.getUTCDate()).padStart(2, '0')
  return `${year}-${month}-${day}`
}

修改TextField组件的value属性:

<TextField
  name="purchaseDate"
  type="date"
  required
  variant="outlined"
  fullWidth
  value={formatDateToInput(bookData.purchaseDate)}
  onChange={(e) => setBookData({ ...bookData, purchaseDate : e.target.value })}
/>

提交阶段格式还原

修改完成后提交数据到MongoDB前,将YYYY-MM-DD格式的日期转回ISO 8601格式即可:

// 提交前处理数据
const finalSubmitData = {
  ...bookData,
  purchaseDate: new Date(bookData.purchaseDate).toISOString()
}
// 调用接口提交finalSubmitData

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:00:00