SpringBoot获取数据库datetime类型数据在前端显示为时间戳问题及解决方案

问题描述

最近在做一个SpringBoot项目,数据库使用的是MySQL 5.7,在传递日期时间数据时出现了异常,数据库中的日期显示格式为"yy-mm-dd hh:mm:ss",而传到前端显示的则是一长串数字,即时间戳(即从1970年1月1日00:00:00 GMT标准基准时间到当前时间经过的毫秒数)
在这里插入图片描述

解决方法1

java有两种Date类型,一种是import java.util.Date,另一种是import java.sql.Date,把util类型的Date转换为sql的Date就行了。代码如下:

    java.util.Date utilDate = user.getDate();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    user.setDate(sqlDate);

因为是User类中定义的是util的Date,所以会把数据库中sql的Date变成时间戳
在这里插入图片描述

解决方法2

查看出现错误的时间日期所在的定义类,不出意外的话它调用的是import java.util.Date,把util改成sql就完事了
在这里插入图片描述
在这里插入图片描述

一点小细节和拓展

如果使用util转sql的Date,需要保证只有年月日,时间的时分秒必须为零,否则无法转换

所以这个问题的根本原因是什么呢?

我个人猜测应该是Generator生成逆向工程时类中默认生成的就是java.util.Date,导致出现时间戳问题

希望SpringBoot尽快修复这个问题,@SpringBoot打钱(doge)

ok,就这样,最近也在忙着找工作,愈发感觉到人的记忆力确实不如烂笔头,写博客记录是一个非常好的习惯,希望可以保持下去吧。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐