package TestDate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/* 准备一个长度是9的日期数组
使用1970年-2000年之间的随机日期初始化该数组
按照这些日期的时间进行升序排序
比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,
因为它的时间更小,虽然日期更大*/
public class Test02 {
public static void main(String[] args)throws ParseException {
Date[] dates = new Date[9];
/*SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
String str = "1970";
Date d1 = simpleDateFormat.parse(str);
Date d2 = simpleDateFormat.parse("2000");
System.out.println(d2.getTime() - d1.getTime()); // 946684800000*/
getRandomDates(dates);
System.out.println("结果:");
for (Date d:dates) {
System.out.println(d.toLocaleString()+" ");
}
sortDates(dates);
System.out.println("排序:");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
for (Date d:dates
) {
System.out.println(simpleDateFormat.format(d));
}
}
public static void sortDates(Date [] dates){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmm");
String[] strings = new String[dates.length];
Date tmp;
int[] ints = new int[dates.length];
for (int i = 0; i < dates.length; i++) {
strings[i] = simpleDateFormat.format(dates[i]);
ints[i] = Integer.parseInt(strings[i]);
}
int tmpInt = 0;
for(int i = 0;i < dates.length - 1;i++){
for (int j = 0; j <dates.length - i -1 ;j++) {
if(ints[j] <ints[j+1]){
tmpInt = ints[j];
ints[j] = ints[j+1];
ints[j+1] = tmpInt;
tmp = dates[j];
dates[j] = dates[j+1];
dates[j+1] = tmp;
}
}
}
}
public static void getRandomDates(Date[] dates)throws ParseException{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String str = "2000/12/31 23:59";
Date endDate = simpleDateFormat.parse(str);
for (int i = 0; i < dates.length; i++) {
long tmp_Time = (long) (Math.random() * (endDate.getTime()));
dates[i] = new Date(tmp_Time);
}
}
}
总结
对于bug代码:不要按照自己的思维走,一定要不带脑袋的按照代码的轨迹来检查