0

我有一个arraylist字符串类型。在此arraylist我存储一些日期,例如

 ArrayList<String> date = new ArrayList<String>();
    date.add("20-jan-2013 11:32:39 AM");
    date.add("21-jan-2013 11:32:39 AM");
    date.add("22-jan-2013 11:32:39 AM");
    date.add("23-jan-2013 11:32:39 AM");
    .
    .
    .
    .
    .
    .
    date.add("29-jan-2013 11:32:39 AM");

数组列表中有超过 20 个值。我的问题是我如何从arrayList两个值(日期)之间获取值(日期),比如从这个日期开始 21-jan-2013 11:32:39 AM to 27-jan-2013 11:32:39 AM. 帮助我,谢谢

4

4 回答 4

2
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mmm-yyyy hh:mm:ss aa");
Date convertedDate = new Date();
ArrayList<String> filteredDate=new ArrayList<String>;
Iterator<String> iterator = lList.iterator();

for (String temp : lList) 
{
 try
    {
    convertedDate = dateFormat.parse(temp);
     } 
    catch (Exception e) 
    {
    e.printStackTrace();
    }
    if((convertedDate.before(date2)) && (convertedDate.after(date1))) //here "date2" and "date1" must be converted to dateFormat
    {
      filteredDate.add(convertedDate); // You can use these filtered ArrayList
    }
}
于 2013-01-29T10:44:10.087 回答
0
List<String> result = new ArrayList<String>();
boolean foundFirst = false;
for(String s : date) {
    if(!foundFirst) {
        if(s.equals(myFirstElement)) {
            foundFirst = true;
            result.add(s);
        }
    } else {
        result.add(s);
        if(s.equals(myLastElement) {
            break;
        }
    }
}
于 2013-01-29T10:39:11.147 回答
0

像这样的一些想法会起作用:

    ArrayList<String> date = new ArrayList<String>();

    int begin=0, end=0;
    for(int i = 0; i < date.size(); i++){
        if(date.get(i).equals(myFirstDate)){
            begin = i;
        }
        if(date.get(i).equals(myLastDate)){
            end = i;
        }
    }

    ArrayList<String> myDates = new ArrayList<String>();
    for(int i = 0; i < (end - begin); i++){
        myDates.add(date.get(i + begin));
    }
于 2013-01-29T10:39:57.723 回答
-1

做这样的事情:

private ArrayList<String> filter(ArrayList<String> original, String startDate, String endDate) {
    TimeStamp start = ...; 
    TimeStamp end = ...;

在这里,您需要获取字符串值的时间戳,看看它是如何工作的,看看这个问题,以及提供的答案

    ArrayList temp = new ArrayList<String>();
    for (int i= 0; i < original.size(); i++) {
       TimeStamp currentTimeStamp = timestamp of original.get(i)
       if (start < currentTimeStamp && stop > currentTimeStamp) {
           temp.add(original.get(i));
       }
    }
    return temp;
}

这应该可以解决您的问题

于 2013-01-29T10:50:04.973 回答