Date.compareTo()的应用

简介: Date.compareTo()的应用

在业务逻辑里需要查询某个时间段的状态,根据查询起始时间和查询结束时间来查此时间段的记录并返回


后来检查的时候发现如果返回的第一条数据的时间和查询起始时间中间有间隔,那么就会漏掉数据,造成计算的误差


比如从9:00:00查询到10:00:00,结果第一条数据是9:05:00的,那么从9:00:00到9:05:00这段时间的数据其实是有状态的,不能随意丢弃,


所以必须根据第一条数据的时间向上查询一条数据,


然后再将查询起始时间赋值给它,并添加到集合首位,也就是补头数据


后来再检查的时候发现如果查询起始时间刚好就是返回的第一条数据时间,那么还会按照之前的逻辑向前查询一条数据,那么这样就又出现了问题,


刚开始想的是将Date转为String来equals对比查询起始时间和返回第一条数据的时间,但是这样有失准确


后来想到了Date的一个比较方法,就是Date.compareTo(),用来比较两个时间,如果相等返回0,这样就解决了问题,在向上查找一条数据的方法加一个判断


如果compareTo()返回的不是0才会向上查找一条数据,保证了数据的完整和准确.


记录一下


int compare = dataRealTime.get(0).getDataTime().compareTo(startTime);
            if (0 != compare) {
                //如果dataRealTime集合至少有一条数据,就查询此数据的前一条数据,赋值为查询起始时间,并添加到集合第一位.
                addPreviousStatus(dataRealTime, startTime);
            }


相关文章
|
3月前
javaDataUtil将 Date 转为 LocalDateTime转Long转String转Date
javaDataUtil将 Date 转为 LocalDateTime转Long转String转Date
78 1
|
3月前
parseInt和parseFloat
parseInt和parseFloat
20 0
|
JavaScript 前端开发 索引
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
105 0
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
|
SQL 存储 分布式计算
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
本文将会深入介绍DATE和TIMESTAMP
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
java86-Interage方法compareto,parseint,intvalue
java86-Interage方法compareto,parseint,intvalue
101 0
java86-Interage方法compareto,parseint,intvalue
|
JSON 数据格式 索引
Array,Date,String 对象方法
Array,Date,String 对象方法
104 0
Array,Date,String 对象方法
|
JavaScript 前端开发
parseInt原来是这样用的
原文:parseInt原来是这样用的   今天在群里无意中看到了这样一个问题,突然发现不会,结果运行一看,懵逼了,不知道为什么???(结果是啥?自己去试试看)        现在我们还是先来复习一下parseInt()这个知识点吧!      parseInt() 函数可解析一个字符串,并返回一个整数。
751 0