Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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
Android 将经过的时间(例如:上午8:00)与当前时间进行比较_Android_Time_Compare_Elapsed - Fatal编程技术网

Android 将经过的时间(例如:上午8:00)与当前时间进行比较

Android 将经过的时间(例如:上午8:00)与当前时间进行比较,android,time,compare,elapsed,Android,Time,Compare,Elapsed,我有一个数组。我从中检索每一次,将其与当前时间进行比较,以便删除经过的时间并创建一个新的数组,其中包含剩余时间 我正在比较从 String timeSlots[] = {"08:00 AM to 08:30 AM", "08:30 AM to 09:00 AM", "09:00 AM to 09:30 AM", "09:30 AM to 10:00 AM", "10:00 AM to 10:30 AM", "10:30 AM to 11:00 AM", "11:00 AM to 11:30 AM

我有一个
数组
。我从中检索每一次,将其与当前时间进行比较,以便删除经过的时间并创建一个新的
数组,其中包含剩余时间

我正在比较从

String timeSlots[] = {"08:00 AM to 08:30 AM", "08:30 AM to 09:00 AM", "09:00 AM to 09:30 AM", "09:30 AM to 10:00 AM", "10:00 AM to 10:30 AM", "10:30 AM to 11:00 AM", "11:00 AM to 11:30 AM", "11:30 AM to 12:00 PM", "12:00 PM to 12:30 PM", "12:30 PM to 01:00 PM", "01:00 PM to 01:30 PM", "01:30 PM to 02:00 PM", "02:00 PM to 02:30 PM", "02:30 PM to 03:00 PM", "03:00 PM to 03:30 PM", "03:30 PM to 04:00 PM", "04:00 PM to 04:30 PM", "04:30 PM to 05:00 PM", "05:00 PM to 05:30 PM", "05:30 PM to 06:00 PM", "06:00 PM to 06:30 PM", "06:30 PM to 07:00 PM", "07:00 PM to 07:30 PM", "07:30 PM to 08:00 PM", "08:00 PM to 08:30 PM", "08:30 PM to 09:00PM"};


for (int i = 0; i < timeSlots.length; i++) {
            timeSlotesTemp[i] = timeSlots[i].substring(0, 8);
            removeElapsedTime(timeSlotesTemp[i].toLowerCase());
        }

public void removeElapsedTime(String elapsedTime) { // elapsedTime = 08:00 pm
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a");
            Date elapsedDate = dateFormat.parse(elapsedTime);
            String strElapsedDate=dateFormat.format(elapsedDate);

            Calendar calendar = Calendar.getInstance();
            Date currentDate = calendar.getTime();
            String calculatedDate = dateFormat.format(currentDate);
            if (new Date(strElapsedDate).compareTo(new Date(calculatedDate))<0) {
                finalTimeSlotes.remove(elapsedTime);
            }
             else if (new Date(strElapsedDate).compareTo(new Date(calculatedDate))>0) {
                finalTimeSlotes.add(elapsedTime);
            }

        } catch (Exception e) {
            Log.e(TAG, "" + e);
        }
    }
String时隙[]={“08:00 AM至08:30 AM”、“08:30 AM至09:00 AM”、“09:00 AM至09:30 AM”、“09:30 AM至10:00 AM”、“10:00 AM至10:30 AM”、“10:30 AM至11:00 AM”、“11:00 AM至11:30 AM”、“11:30 AM至12:00 PM”、“12:00 PM至12:30”、“12:30 PM至01:00 PM”、“01:00 PM至01:30 PM”、“01:30 PM至02:00 PM”、“02:00 PM至02:30”,“下午02:30至03:00”、“下午03:00至03:30”、“下午03:30至04:00”、“下午04:00至04:30”、“下午04:30至05:00”、“下午05:00至05:30”、“下午05:30至06:00”、“下午06:00至06:30”、“下午06:30至07:00”、“下午07:00至07:30”、“下午07:30至08:00”、“晚上08:00至08:30”、“晚上08:30至09:00”};
对于(int i=0;i

比较时间时,我得到了
java.lang.IllegalArgumentException:Parse error:03:30 pm
,为什么不比较日期对象而不是日期字符串。 下面是示例代码

   public static void removeElapsedTime(String elapsedTime) { // elapsedTime = 08:00 pm
        try {
            Date elapsedDate = getDateFromTimeString(elapsedTime);
            Calendar calendar = Calendar.getInstance();
            Date currentDate = calendar.getTime();
            if (elapsedDate.compareTo(currentDate) < 0) {
                finalTimeSlotes.remove(elapsedTime);
            } else if (elapsedDate.compareTo(currentDate) > 0) {
                finalTimeSlotes.add(elapsedTime);
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("" + e);
        }
        return;
    }

    public static Date getDateFromTimeString(String time) {
        String currentDate = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
        SimpleDateFormat df1 = new SimpleDateFormat("dd-MM-yyyy hh:mm a");
        Date date = null;
        try {
            date = df1.parse(currentDate + " " + time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
publicstaticvoidremoveelassedtime(字符串elapsedTime){//elapsedTime=08:00pm
试一试{
日期elapsedDate=getDateFromTimeString(elapsedTime);
日历=Calendar.getInstance();
Date currentDate=calendar.getTime();
如果(elapsedDate.compareTo(currentDate)<0){
finalTimeSlotes.移除(elapsedTime);
}如果(elapsedDate.compareTo(currentDate)>0,则为else{
finalTimeSlotes.add(elapsedTime);
}
}捕获(例外e){
e、 printStackTrace();
系统错误打印项次(“+e”);
}
返回;
}
公共静态日期getDateFromTimeString(字符串时间){
字符串currentDate=新的SimpleDateFormat(“dd-MM-yyyy”).format(新日期());
SimpleDataFormat df1=新的SimpleDataFormat(“dd-MM-yyy-hh:MM-a”);
日期=空;
试一试{
date=df1.parse(当前日期+时间);
}捕获(解析异常){
e、 printStackTrace();
}
返回日期;
}
编辑:

java.lang.IllegalArgumentException:解析错误:03:30 pm
的原因是您只传递时间字符串来创建新的日期对象。您还需要传递日期字符串和时间字符串。

@karthikkolanji new Date(String Date)从JDK版本1.1开始就不推荐使用。所以请尽量避免使用它。@karthikkolanji很乐意帮助您。:-)