問題:
準備一個長度是9的日期數組
使用1970年-2000年之間的隨機日期初始化該數組
按照這些日期的時間進行升序排序
比如 1988-1-21 12:33:22 就會排在 1978-4-21 19:07:23 前面,因爲它的時間更小,雖然日期更大
Date[] dates = new Date[9];
int yearstart = 1970;
int yearend = 2000;
System.out.println("得到的隨機日期數組:");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0;i<dates.length;i++){
dates[i] = getDateRandom(yearstart,yearend);
System.out.print(sdf.format(dates[i])+" ");
//用來計算分成3組,一組3個數據
if (i%3 == 2){
System.out.println();
}
}
public static Date getDateRandom(int start ,int end){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
try {
Date sdate = simpleDateFormat.parse(String.valueOf(start));
//應該是2001年,減去1毫秒,也就是2000年的最後一刻,即2000-12-31 23:59:59
Date edate = simpleDateFormat.parse(String.valueOf(end+1));
long timerandom = (long) (Math.random()*((edate.getTime()-1)-sdate.getTime()));
return new Date(timerandom);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
//使用選擇排序法 正序排列
System.out.println("排序之後的日期數組:");
SimpleDateFormat sdformat = new SimpleDateFormat("HHmmss");
for (int i=0;i<dates.length-1;i++){
for (int j = i+1;j<dates.length;j++){
//把日期轉換成時分秒格式,來判斷大小
String datei = sdformat.format(dates[i]);
String datej = sdformat.format(dates[j]);
int lTime = Integer.parseInt(datei);
int JTime = Integer.parseInt(datej);
if (lTime>JTime){
Date temp = dates[j];
dates[j] = dates[i];
dates[i] = temp;
}
}
}
for (int i = 0;i<dates.length;i++){
System.out.print(sdf.format(dates[i])+" ");
if (i%3 == 2){
System.out.println();
}
}