如何以 yyyy-MM-ddTHH:mm:ss.SSS 格式降序排列日期列表

How to sort list of dates in defending order in yyyy-MM-ddTHH:mm:ss.SSS formte

我有一个日期列表是 yyyy-MM-ddTHH:mm:ss.SSS formate。我想按升序和降序对这些日期进行排序。是否有任何收集方法可以对这些日期进行排序?如何对这些日期进行排序

提前致谢

1) 使用适当的 SimpleDateFormat 解析您的字符串:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss.SSS");
try {
    Date date = formatter.parse(dateInString);
} catch (ParseException e) {
    e.printStackTrace();
}

2) 将每个日期存储在列表中。为此,首先实例化一个新列表...

ArrayList<Date> myDates = new ArrayList<Date>();

... 其次,在您的 try 语句中,在 parse 命令之后将每个日期添加到列表中:

myDates.add(date);

3) 使用以下方式对它们进行排序:

Collections.sort(myDates); // Ascending

Collections.sort(myDates, Collections.reverseOrder()); // Descending

为了获取 DateTimes 的毫秒数,我使用了 Joda Time API:http://www.joda.org/joda-time/

public class Testing 
{
    public static void main(String[] args) {
        //yyyy-MM-ddTHH:mm:ss.SSS
        String date1 = "2015-01-10T11:00:00.000";
        String date2 = "2015-01-15T12:00:00.000";
        String date3 = "2015-01-20T13:00:00.000";

        List<String> dates = new ArrayList<String>();

        dates.add(date2);
        dates.add(date1);
        dates.add(date3);

        sort(dates);
        for(String str : dates) {
            System.out.println(str);
        }
    }

    public static void sort(List<String> dates) {
        Collections.sort(dates,new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                //The dates are currently sorted in Ascending order
                return Long.compare(new DateTime(o1).getMillis(), new DateTime(o2).getMillis());
                //To have them in Descending order just switch the DateTimes around
            }
        });
    }
}

将字符串日期转换为 datetime:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-ddTHH:mm:ss.SSS");
DateTime dt = formatter.parseDateTime(string);

将它们放入列表中。

然后对列表进行排序:

Collections.sort(list);
1)First Iterate the List Of dates in string format .
On Each Item Call GetLongValueOfDateTimeString(date in string format) Then Return Value is in Long 

public long GetLongValueOfDateTimeString(String dateTimeInStringFormat) {
        DateFormat f = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss.SSS");
        Date date;
        long dateinMillis = 0;
        try {
            date = f.parse(dateTimeInStringFormat);
            dateinMillis = date.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateinMillis;
    }

2) Store each value  in a list of long Value(below is the implementation).

long[] longs = new long[]{1L};
Long[] longObjects = ArrayUtils.toObject(longs);
List<Long> longList = java.util.Arrays.asList(longObjects);
longList.add(dateinMillis);

3) Sort them using:

Collections.sort(longList); (Ascending Order)
Collections.sort(longList).reverse(); (Descending Order)