2015-10-30 6 views
1

У меня есть array времени. Я извлекаю каждый раз из него, чтобы сравнить его с текущим временем, чтобы удалить прошедшее время и создать новый array, который содержит левое время.Сравните прошедшее время (например: 08:00) до текущего времени android

Я сравниваю истекшее время от

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); 
     } 
    } 

я получаю java.lang.IllegalArgumentException: Parse error: 03:30 pm, сравнивая время

ответ

1

Почему вы не сравнить объект Date вместо строки даты. Вот пример кода.

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; 
    } 

Edit:
Причина java.lang.IllegalArgumentException: Parse error: 03:30 pm это вы передаете только строки времени для создания нового объекта Date. Вам также нужно передать строку даты вместе с Time String.

+0

Позвольте мне попробовать это ..... –

+0

@karthikkolanji ** новая дата (дата строки) устарела От версии JDK 1.1 **. поэтому старайтесь избегать его использования. –

+0

спасибо, сэр, это сработало .. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^