Element 日期选择器 DateTimePicker 提交到后端发现少一天的问题
先看解决办法
添加:value-format="yyyy-MM-dd"
再来看问题本身,其实不是DateTimePicker组件的问题,这个问题是Date.prototype.toJSON
当Date对象通过JSON.stringify方法序列化时会调用原型的toJSON方法,
Date.prototype.toJSON 这个方法根据官方文档(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON)
它是调用toISOString()方法,这个方法会将本地时间转换UTC时间再序列化,如果你的计算机时区是北京时间,那么序列化后会少八个小时,那么为什么加value-format="yyyy-MM-dd" 属性能解决问题呢,因为加了这个属性后,字段的数据类型是String类型,不再是Date类型,所以不会调用原型链上的toJSON方法,但不是最终的解决办法,
所以最终的解决方法是重写Date.prototype.toJSON方法
import dayjs from 'dayjs' Date.prototype.toJSON=function(){ return dayjs(this).format('YYYY-MM-DDTHH:mm:ss.SSSZ'); }