问题描述:开发过程中发现数据库存的字段值要比<el-date-picker>绑定的值大一天,说明:数据库为mysql,字段类型为date类型

经过查阅资料,得知问题是因为时区不同步导致的。数据库存储的是UTC时间,而el-date-picker显示的是本地时间。如果数据库服务器和你的应用服务器的时区不一致,或者你直接从数据库取出来的UTC时间显示在了本地时区的el-date-picker中,就会发现日期少了一天。

解决方案:
1.后台实体类修改:

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date date;

2.前端js修改:

// 假设从数据库中取出的UTC时间为utcDate
// 转换为本地时间
const localDate = new Date(utcDate.getTime() + utcDate.getTimezoneOffset() * 60000);
 
// 然后在el-date-picker中使用这个本地时间
<el-date-picker v-model="localDate"></el-date-picker>
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐