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');
}

  

posted @ 2022-03-27 18:05  Jackson.Bruce  阅读(180)  评论(0编辑  收藏  举报