问题
在使用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';