2013-10-07 1 views
0

일부 열차 일정 신청을하고 있습니다. 나는 해당 일정을 위해 열차와 시간표를 저장했다. 특정 열차 이름을 선택하는 경우 해당 열차의 타이밍을 표시해야합니다. 이제 데이터베이스 시간과 현재 시간을 비교해야합니다. 내 현재 시간의 1 시간 후 내 별도의 배열에 저장 해야하는 경우 2 시간 후에 내 별도의 배열에 저장할 필요가 내 DB를 시간. 그리고 제 코드가 여기에 있습니다.현재 시간 데이터베이스를 안드로이드에 저장된 시간을 비교하는 방법?

 ArrayList<String> str_arr1 = new ArrayList<String>(); 
ArrayList<String> str_arr2 = new ArrayList<String>(); 
ArrayList<Integer> hr_arr_1 = new ArrayList<Integer>(); 
ArrayList<Integer> mint_arr_1 = new ArrayList<Integer>(); 
ArrayList<Integer> hr_arr_2 = new ArrayList<Integer>(); 
ArrayList<Integer> mint_arr_2 = new ArrayList<Integer>(); 


    String str,str1; 
final ArrayList<HashMap<String, String>> new_item = new ArrayList<HashMap<String, String>>(); 
int[] str_int = new int[3]; 
int[] str_int1 = new int[3]; 
    @SuppressLint("NewApi") 
    public class SheduleActivityMain extends Activity 
    { 
    int count=0; 
public void onCreate(Bundle savedInstanceState) 
{ 

    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); 
Calendar now = Calendar.getInstance(); 
Calendar now1 = Calendar.getInstance(); 
Calendar now2 = Calendar.getInstance(); 
    System.out.println("Current time : " + dateFormat.format(now.getTime())); 
    String time_now = dateFormat.format(now.getTime()); 
    System.out.println("time_now----->"+time_now); 
    now1.add(Calendar.HOUR,1); 

    System.out.println("New time after adding 1 hours : " 
        + dateFormat.format(now1.getTime())); 
    now2.add(Calendar.HOUR,2); 

    System.out.println("New time after adding 2 hours : " 
        + dateFormat.format(now2.getTime())); 
    System.out.println("Is now1 after now ? : " + now1.after(now)); 

    StringTokenizer st1 = new StringTokenizer(time_now, ":"); 
    while (st1.hasMoreElements()) 
    { 
     //System.out.println(st1.nextElement()); 
     str = (String) st1.nextElement(); 
     str_arr1.add(str); 
    } 
     str_int[0] = Integer.parseInt(str_arr1.get(0)); 
     str_int[1] = Integer.parseInt(str_arr1.get(1)); 
     str_int[2] = Integer.parseInt(str_arr1.get(2)); 
    for(int j=0;j<str_int.length;j++) 
     { 
     System.out.println("integer array is... "+j+"..."+str_int[j]); 
     } 


     for(int time=0;time<train_time.length;time++) 
     { 

      StringTokenizer st2 = new StringTokenizer(train_time[time], ":"); 

      while (st2.hasMoreElements()) 
      { 
       str1 = (String) st2.nextElement(); 
       str_arr2.add(str1); 
       System.out.println("str1..."+str1); 

      } 

      System.out.println("str_arr2.........."+str_arr2); 
    System.out.println("method calling.........."); 

     getTrainTime(str_arr2.get(count),str_arr2.get(count+1)); 

     for(int chk=count;chk<=str_arr2.size()-3;chk++) 
     { 
      getTrainTime(str_arr2.get(count),str_arr2.get(count+1)); 
     } 

} 


    void getTrainTime(String s1,String s2) 
    { 
     System.out.println("count--->"+count); 
     int n1 = Integer.parseInt(s1); 
     int n2 = Integer.parseInt(s2); 
     System.out.println("n1.n2 "+n1+n2); 
     count = count+3; 
     System.out.println(str_int[0]+str_int[1]); 
     if(n1==str_int[0]+1) 
     { 
      System.out.println("inside if condition....."); 
      hr_arr_1.add(n1); 
      //mint_arr_1.add(n2); 
      System.out.println("hr_arr_1,mint_arr_1"+hr_arr_1+mint_arr_1); 

     } 
     else if(n1==str_int[0]+2) 
     { 

     } 
     //System.out.println("hr_arr_1,mint_arr_1"+hr_arr_1+mint_arr_1); 

     } 

} 

내가있어이 같은 일부 오류 ..

java.lang.IndexOutOfBoundsException : 잘못된 인덱스 (12)는, 크기가 나는 두 번을 비교할 수있는 방법 (12)

입니까? 이 오류를 어떻게 해결할 수 있습니까? 아무도 나를 도울 수 있습니까?

+0

그리고 지금까지 어떤 시도를 했습니까? 어떻게 시간을 저장하고 있습니까? 이 배열을 "이와 같이"배열에 저장한다고 가정 해 봅시다. –

+0

우리가 말할 수있는 전부는이 문제를 해결하십시오. – ppeterka

+0

대부분의 설명 변수의 이름입니다. – Reinherd

답변

0
java.lang.IndexOutOfBoundsException: Invalid index 12, size is 12 

이 오류는 13 위치의 값을 얻을려고, 의미하지만, 배열은 단지 12 항목이 있습니다. (->Index ouf of bounds). 명심하십시오 : 배열 색인은 0으로 시작합니다! 을 그리고 당신의 코드를 다음 시간을 수정하십시오

당신은 yourArray[yourArray.length - 1]

EDIT 같은 STH를 사용해야합니다. 그것은`읽을 당신은

같은 Calendar 개체를 사용할 수 있습니다, 값이 다음 2 시간 이내에 있는지 확인하기 위해, 그런데

을 (... 변수에게 설명하는 이름을 부여, 불필요한 System.out.print 제거)

Calendar currentTime = Calendar.getInstance(); 

Calendar currentTimePlus2 = Calendar.getInstance(); 
currentTimePlus2.add(Calendar.HOUR,2); 

Calendar yourDataTime; //where ever it might come 

if(yourDataTime.getTime().before(currentTimePlus2.getTime()) && 
    yourDataTime.getTime().after(currentTime.getTime()){ 

    //your Data within the next two hours 
} else{ 

    //your Data NOT within the next two hours 
} 

)

관련 문제