Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取最近的时间_Java_Android_Date_Time - Fatal编程技术网

Java 获取最近的时间

Java 获取最近的时间,java,android,date,time,Java,Android,Date,Time,我有一个日期时间值,如“30-01-2014 22:50” 我有相同格式的日期数据库,但数据类型为字符串 现在我想从给定日期时间“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:

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

我有相同格式的日期数据库,但数据类型为字符串

现在我想从给定日期时间“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.之后(date2)和date1.之前(date3)

时间有什么功能吗


谢谢

是的,有。请参阅文档。您提到的两种方法—
在(日期时间)
之后和
在(日期时间)
之前是
日期
类的一部分

编辑:

要完成您试图完成的任务,您可以对日期进行排序,然后使用
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;
}
if(`Math.abs(Date1.getTime()-DateCompare.getTime())
从每个日期对象获取毫秒,并将其添加到地图中,然后尝试查找最近的一个

否则,您可以使用sql查询直接从数据库中获取最近的日期

SELECT TOP 1 *
FROM x
WHERE x.date < @CurrentDate
ORDER BY x.date DESC
选择前1名*
从x
其中x.date<@CurrentDate
按x.date DESC订购
资料来源:

在SQl自身中从文本转换为日期


是的,但我将如何实现输出?任何小提示您都可以创建一个列表,对其进行排序,然后遍历列表以找到与指定日期最接近的一个。使用date.dateTime()进行比较可能会更容易由于有效日期可能在日期之前或之后,因此您也可以对其进行比较,并且仍然有效。将尝试毫秒方式…我的数据库没有日期数据类型。它是简单的文本。仍然可能吗?我已更新了一次答案检查。这将指导您使用数据库本身中的某些样式从文本转换为日期。请为查询排序根据输入和日期列之间的差异。