2012-04-25 56 views
0

我有一个字符串数组,其格式为“2012-04-26T08:38:00”。我需要两个时间差,所以我已经从“Ť”分割字符串和现在从第一索引i分裂与它存储在阵列 所以现在Arrayindex out of bound android

at array index 0 = 2012-04-26 
and array index 1 = 08:38:00 

“:”,因此它存储象

[0] = 08 
[1] = 38 
[2] = 00 

现在,当我从当前时间减去它,它给了我昨天的良好输出,但现在它引发错误。

04-25 17:32:34.103: WARN/System.err(4292): java.lang.ArrayIndexOutOfBoundsException: index=1 length=1 
04-25 17:32:34.103: WARN/System.err(4292):  at com.housedisplay.ListViewCustomAdapter.getView(ListViewCustomAdapter.java:83) 
04-25 17:32:34.103: WARN/System.err(4292):  at android.widget.AbsListView.obtainView(AbsListView.java:1964) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.makeAndAddView(ListView.java:1756) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.fillDown(ListView.java:656) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.fillFromTop(ListView.java:716) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.layoutChildren(ListView.java:1609) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.AbsListView.onLayout(AbsListView.java:1794) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1527) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1316) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.154: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.154: WARN/System.err(4292):  at com.google.android.maps.MapView.onLayout(MapView.java:764) 
04-25 17:32:34.154: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.173: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1201) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1944) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-25 17:32:34.213: WARN/System.err(4292):  at android.os.Looper.loop(Looper.java:126) 
04-25 17:32:34.213: WARN/System.err(4292):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
04-25 17:32:34.213: WARN/System.err(4292):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 17:32:34.213: WARN/System.err(4292):  at java.lang.reflect.Method.invoke(Method.java:491) 
04-25 17:32:34.213: WARN/System.err(4292):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
04-25 17:32:34.223: WARN/System.err(4292):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
04-25 17:32:34.223: WARN/System.err(4292):  at dalvik.system.NativeStart.main(Native Method) 

代码::

try { 
      holder.imgViewLogo.setText(arr_ServiceNumber[position]); 
      holder.txtViewTitle.setText(itemList[position]); 

      stime = arr_ScheduledDepartureTime[position].split("T"); 
      sTime2 = stime[1].split(":"); 

      Date dt = new Date(); 
      int hours = dt.getHours(); 
      int minutes = dt.getMinutes(); 
      int myhour = Integer.parseInt(sTime2[0]); 
      int mymin = Integer.parseInt(sTime2[1]); 

      int onefire = Math.abs((myhour - hours) * 60); 
      int total; 
      if (onefire >= 60) { 
       total = onefire - Math.abs((mymin - minutes)); 
      } else { 
       total = onefire + Math.abs((mymin - minutes)); 
      } 
      holder.lstrw_btn_departure.setText(total + " min \n" + "(" 
        + sTime2[0] + ":" + sTime2[1] + ")"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
+0

是不是有一种方法可以在内部以'long'和'String'的形式处理日期/时间,仅用于显示目的? – zapl 2012-04-25 12:13:12

回答

1

Java可以为您解析字符串。

String dateString = "2012-04-26T08:38:00"; 
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
Date date = null; 
try { 
    date = parser.parse(dateString); 
} catch (ParseException e) { 
    // error parsing. 
} 
if (date != null) { 
    // do something with date. 
} 
+0

+1同意Simpledateformat但请检查您的代码....为什么'T'在simpledateformat构造函数中?它工作吗? – 2012-04-25 12:23:42

+0

是的,它的作品。 OP的日期字符串中有一个T,所以在SimpleDateFormat的构造函数中指定的日期格式必须包含该日期格式,否则解析将失败。 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html有一个'T'的例子。 – zapl 2012-04-25 12:34:16

0

它的发生,因为你试图访问第二个索引(1)当你只有在ArrayList中这意味着你的唯一有效的索引是0 1元。

错误的第一行会通知您的这个..

`java.lang.ArrayIndexOutOfBoundsException: index=1 length=1` 

这意味着在访问1号ArrayList的索引编号1时(意味着0是目前唯一具有某种内容的索引)的IndexIndexOutOfBoundsException。