问题
在使用AntD使用Form表单DatePicker时间组件的时候,测试意外测出一个历史bug,很神奇,时间会差一天!直接使用Form表单并提交时间会显示时间是Object类型,选择2020-11-30,保存的时候会变成2020-11-29xxx(具体时间后缀),可能是时间组件为英文的原因?转换为中文后日期还是没有转过来,就差了一天……
解决
保存时用方法转一下日期
if(typeof(item.date) === 'object') {
item.date= moment(new Date(item.date)).format("YYYY-MM-DD");
}
为什么要判断日期为object呢?因为第一次时间为object类型,转换完变成了string类型,如果第一次表单中有其他项填写错误,表单会报错,提示重新填写,这个时候再保存会再次触发moment(new Date(item.date)).format("YYYY-MM-DD")函数。但是因为日期已经转换为string类型了,日期也转换正确了,再使用这个函数页面会崩掉,显示空白,提示方法错误,因此需要判断一下初始日期的格式~
主要代码
moment(new Date(date)).format("YYYY-MM-DD");
别忘了页面需要引用moment库
import moment from 'moment';

在AntD的Form表单中使用DatePicker时遇到日期显示错误,选择2020-11-30保存后变为2020-11-29。原因是时间组件返回的日期为Object类型,转换不正确。解决方法是在保存时通过函数转换日期,同时判断日期格式,避免因类型变化导致的页面错误。需引入moment库。
933

被折叠的 条评论
为什么被折叠?



