2015-04-02 79 views
-5

我的数组列表中有文档编号并创建日期,日期格式为String。我必须用最新的创建日期对arrayList进行排序。提前致谢。将数组列表按字符串格式排序,日期格式为

日期(字符串)格式:1/1/2015

+0

它与JSF有什么关系? – Tiny 2015-04-02 05:32:10

+0

你到目前为止尝试过什么吗?你熟悉'比较器'的用法吗? – Ria 2015-04-02 05:40:20

+0

不要在Java端将所有东西串联起来。这只会让人头痛。只需将日期存储为日期,而不是字符串。字符串只能用于人类的输入(并且应在投入模型之前立即转换)或将其呈现给人类(并且应仅在呈现期间转换)。 – BalusC 2015-04-02 06:16:12

回答

0

public static void main(String [] args){list} dateList = new ArrayList();

 dateList.add(convertToString("1/1/2015")); 
     dateList.add(convertToString("2/1/2015")); 
     dateList.add(convertToString("1/2/2015")); 
     dateList.add(convertToString("3/1/2015")); 
     dateList.add(convertToString("1/4/2015")); 
     dateList.add(convertToString("4/1/2015")); 
     dateList.add(convertToString("2/2/2015")); 
     dateList.add(convertToString("2/4/2015")); 
     dateList.add(convertToString("4/4/2015")); 

     Collections.sort(dateList); 
     System.out.println(dateList); 

    } 

    public static String convertToString(String dateInString){ 

     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     Date date = null; 
     try { 

      date = formatter.parse(dateInString); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return formatter.format(date); 
    } 

请看看上面的代码,我认为它应该可以解决你的问题。

0

这是一个使用apache-commons DateUtils来实现它的非常简单的方法。

List<String> dates = new ArrayList<String>(); 
    dates.add("3/1/2015"); 
    dates.add("1/4/2015"); 
    dates.add("1/1/2015"); 
    final String[] formats = new String[] { "dd/MM/yyyy" }; 
    Collections.sort(dates, new Comparator<String>() { 

     @Override 
     public int compare(String d1, String d2) { 
      try { 
       Date date1 = DateUtils.parseDate(d1, formats); 
       Date date2 = DateUtils.parseDate(d2, formats); 
       return date1.compareTo(date2); 
      } catch (ParseException e) { 
       // do something to treat this error 
       return 1; 
      } 
     } 
    }); 
相关问题