在对象列表的for循环中使用SimpleDateFormat

时间:2011-12-04 15:41:44

标签: java android

每当我尝试这样做时,我的应用都会崩溃:

for (CalendarEvent event : this.ListofEvents){

                 String myDate = new String(event.getDate());
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
                    try {
                        theDate = format.parse(myDate);
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    System.out.println(theDate.getDate());
             }

如果我只是打印event.getDate()作为测试,它会显示所有日期。但是当我尝试格式化每个日期时,我假设它锁定了电话资源。这是一个包含很多条目的相当大的List。

也许有更好的方法来获取日,月和年而不占用所有资源。

1 个答案:

答案 0 :(得分:2)

为什么要在循环中创建DateFormat?您创建它,使用它,然后在下一次迭代中它超出了GC的范围。

将它移到循环外:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
format.setLenient(false);               
for (CalendarEvent event : this.ListofEvents){
    // what does event.getDate() return?  A java.util.Date?  If yes, why are you doing this at all?
    String myDate = new String(event.getDate());
    try {
        theDate = format.parse(myDate);
        System.out.println(theDate.getDate());
    } catch (ParseException e) {
        e.printStackTrace();
    }
}