获取最近的Android时间

时间:2014-01-30 15:02:50

标签: java android date time

我有一个日期时间值,如“30-01-2014 22:50”。

我有相同格式的Date数据库,但数据类型为String。

现在我想从给定日期时间的数据库“30-01-2014 22:50”获得最近的时间。

示例:

我拥有的价值:"30-01-2014 22:50"

数据库:

"30-01-2014 02:20"
"30-01-2014 05:30" 
"30-01-2014 22:55"
"30-01-2014 10:50"
"30-01-2014 22:54"`

所以输出应该是。

"30-01-2014 22:54"

我怎样才能做到这一点?

date1.after(date2) and date1.before(date3)

时间有什么功能吗?

由于

2 个答案:

答案 0 :(得分:1)

是的,有。请参阅文档here。您提到的两种方法 - after(Date when)before(Date when)Date类的一部分。

编辑:

要完成您要执行的操作,您可以对日期进行排序,然后使用Date.after(Date when)Date.before(Date when)查找数据集的轴心点。之后,您已将其缩小到剩余的两个日期,因此您所要做的就是将这两个日期与您的比较日期进行比较,以查看哪个日期最接近。

例如:

if(`Math.abs(Date1.getTime() - DateCompare.getTime()) < Math.abs(Date2.getTime() - DateCompare.getTime()){
     return Date1;
} else {
     return Date2;
}

答案 1 :(得分:1)

从每个日期对象获取毫秒数,然后将其添加到地图中,然后尝试找到最近的对象。

否则,您可以使用sql Query直接从DB获取最近的日期。

SELECT TOP 1 *
FROM x
WHERE x.date < @CurrentDate
ORDER BY x.date DESC

来源:Find closest date in SQL Server

在SQl itselft中从文本转换为日期。