Arco Design 的 DatePicker 为什么无法回显从接口获取的日期值?
我用 Arco Design 的 DatePicker 组件,从后端拿到一个 ISO 格式的日期字符串比如 “2024-05-15T08:30:00.000Z”,但直接赋值给 value 后组件不显示。试过用 dayjs 转成 Date 对象也不行,控制台没报错,就是空白。
是我格式不对还是得用特定的类型?文档里说支持 Date 和 string,但实际好像没生效。
const [date, setDate] = useState(null);
useEffect(() => {
// 模拟接口返回
const fetchedDate = "2024-05-15T08:30:00.000Z";
setDate(new Date(fetchedDate)); // 也试过直接 set(fetchedDate)
}, []);
return <DatePicker value={date} onChange={setDate} />;
你的 ISO 字符串带时区信息 Z,new Date() 解析后会按 UTC 时间处理,但 DatePicker 默认按本地时间展示,这就导致显示异常。
解决办法是用 dayjs 处理一下,有几种方式:
第一种,直接用 dayjs 对象,Arco Design 兼容 dayjs:
第二种,如果要确保是本地时间,用 utc 插件处理:
第三种,转成 YYYY-MM-DD 格式字符串也行:
建议先试第一种,基本能解决大部分情况。时区问题在日期组件里很常见,处理 ISO 字符串时多注意一下就行。