Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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_Sqlite_Datetime - Fatal编程技术网

Java 如何检查某些日期时间是否在相邻行日期之间?

Java 如何检查某些日期时间是否在相邻行日期之间?,java,android,sqlite,datetime,Java,Android,Sqlite,Datetime,我有下表列值: 2013-06-28T13:00:00.000Z Motion 2013-06-28T18:15:00.000Z Static (row2) 2013-07-03T13:57:22.000Z Moving (row3) 2013-07-03T13:59:00.000Z Motion 我想检查日期29-06-2013T01:00:00Z和29-06-2013T05:00:00Z是否都是静态的。同样,我想检查日期30-06-2013T01:00:00Z和

我有下表列值:

2013-06-28T13:00:00.000Z    Motion
2013-06-28T18:15:00.000Z    Static  (row2)
2013-07-03T13:57:22.000Z    Moving  (row3)
2013-07-03T13:59:00.000Z    Motion
我想检查日期29-06-2013T01:00:00Z和29-06-2013T05:00:00Z是否都是静态的。同样,我想检查日期30-06-2013T01:00:00Z和30-06-2013T05:00:00Z。 显然,如果我们考虑上面的表值,这是正确的,因为两个日期都在ROW2和ROW3之间。 如何使用sqlite实现这一点

我得到的日期是2013年6月29日和2013年6月30日。因此,首先我需要将这两个日期的时间设置为凌晨1点和凌晨5点,然后检查它们是否都是静态的

我尝试了以下方法:

Calendar cal1 = Calendar.getInstance();
cal1.setTime(input1.parse(startDate.get(0))); //29-06-2013
cal1.add(Calendar.AM, 1); //Added 1am to date 29-06-2013
weekHours = cal1.getTime(); 

Cursor chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
    + input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static"))
{
cal1.add(Calendar.AM, 5); //Added 5am to date 29-06-2013
weekHours = cal1.getTime();
}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
    + input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
cal1.add(Calendar.DATE, 1);
cal1.add(Calendar.AM, 1); //Added 1am to date 30-06-2013
weekHours = cal1.getTime();


}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
    + input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
cal1.add(Calendar.AM, 5); //Added 5am to date 30-06-2013
weekHours = cal1.getTime();

}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
    + input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
System.out.println("Both dates are in between")
}
我使用了4个sql查询:

1将时间从凌晨1点设置为date1,并检查其上一次是否为静态

2将时间从上午5点设置为日期1,并检查其上一次是否为静态

3将时间从凌晨1点设置为日期2,并检查其上一次是否为静态

4将时间从上午5点设置为日期2,并检查其上一次是否为静态

如果所有条件都满足,则日期date1和date2都介于两者之间,即静态


但这是sql查询的重复,因此减慢了过程。

您可以将所有四个检查放入子查询中:


选择SELECT movement FROM user WHERE Date为什么不只提取一次列表,然后在列表上运行检查我提取了一次列表,并获取了日期29-06-2013和30-6-2013,但现在我想检查上一个列表,它再次需要sql检查。中间有吗?