ude*_*lus 3 java arrays date simpledateformat
我想创建一个日期数组并对其进行排序.这就是我能够做到的,但这不是我所要求的.
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
java.util.Date date1 = sdf.parse("05-03-2014");
java.util.Date date2 = sdf.parse("23-08-2014");
java.util.Date dates[] = {date1, date2};
java.util.Arrays.sort(dates);
System.out.println(java.util.Arrays.toString(dates));
Run Code Online (Sandbox Code Playgroud)
因为我有一个字符串数组"String dates [] = {"05-11-2014","23-08-2014","05-02-2013"};" 所以我必须在字符串数组中对日期进行排序.如何更改代码?
更好的方法是将String数组转换为数组Date
Date[] arrayOfDates = new Date[dates.length];
for (int index = 0; index < dates.length; index++) {
arrayOfDates[index] = sdf.parse(dates[index]);
}
Run Code Online (Sandbox Code Playgroud)
然后排序arrayOfDates,如果需要,使用SimpleDateFormat格式化结果返回到dates数组...
Arrays.sort(arrayOfDates);
for (int index = 0; index < dates.length; index++) {
dates[index] = sdf.format(arrayOfDates[index]);
}
Run Code Online (Sandbox Code Playgroud)
如果dates数组中的一个或多个值是无效格式,则可以更好地控制应该执行的操作.
另一个"脏"的解决方案是使用一个自定义Comparator,将值转换为Date内联并比较它们.
如果你可以保证它的有效性,这是可以的dates,但是当你做不到时,它会开始分崩离析,例如......
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DirtySort {
public static void main(String[] args) {
String dates[] = {"05-11-2014", "23-08-2014","05-02-2013"};
Arrays.sort(dates, new Comparator<String>() {
private SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy");
@Override
public int compare(String o1, String o2) {
int result = -1;
try {
result = sdf.parse(o1).compareTo(sdf.parse(o2));
} catch (ParseException ex) {
ex.printStackTrace();
}
return result;
}
});
for (String date : dates) {
System.out.println(date);
}
}
}
Run Code Online (Sandbox Code Playgroud)