2013-10-07 33 views
0

我正在做一些火车时刻表的应用程序。我已经为相应的时间表存储了列车和时间。如果我选择特定的火车名称,我必须显示相应火车的时间。现在我必须将我的数据库时间与当前时间进行比较。我的数据库时间,如果我的当前时间一小时后意味着我必须将其存储到单独的数组中,2小时后意味着我必须将其存储到单独的数组中。我的代码在这里。如何比较android中当前时间数据库存储时间?

 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)。请记住:Array的索引从0开始!

您应该使用某物像yourArray[yourArray.length - 1]

编辑: 并请修改您的代码下一次。它`不可读(删除不必要的是System.out.print,给变量描述名字......)

顺便说一句,要检查值是接下来的两个小时内,你可以使用Calendar对象,如

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 
} 

相关问题