因为业务原因,同事做了一个判断当前时间和数据库表中某一行数据创建时间的比较,当创建时间和当前时间相比超过5分钟的时候就执行下一步操作,具体比较代码如下
private boolean getDatePoor(Date start, Date end, long time) {
boolean flag = false;
long diff = end.getTime() - start.getTime();
long sec = diff / 1000;
if (sec > time) {
flag = true;
}
return flag;
}
首先这个比较方法是没有问题的,但是同事表示明明已经过去了半个小时了为什么还没有执行接下来的代码。
单纯看代码是看不出什么原因了,于是debug走起,结果发现,如果用Date类型去接收数据库的timestamp值的话,对于我们东八区而言,这个值传到Date类型中后,java会自动把时间加8个小时。这也就是为什么过了半个小时后接下来的代码还没有执行的原因。
以下是个人测试的结果
首先给出数据库中的部分数据
可以看到id为1的这行数据时间为2020-06-19 16:06:17
然后我创建一个接收数据库表的bean,create_time用java.util.Date类型