2014-06-19 65 views
-1

我需要生成Java中的開始時間和結束時間的列表,以便結束時間始終大於開始時間,並且開始時間和結束時間之間的差異必須爲最多5個小時。使用Java生成開始時間和結束時間的列表

時間格式可以是24小時或12小時。

我想這個代碼,但開始時間和結束時間標準之間的差異並不滿足所有的開始時間和結束時間:

  String myTime = "07:00:00"; 
     SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
     Date d = df.parse(myTime); 
     Calendar cal1 = Calendar.getInstance(); 
     cal1.setTime(d); 
     Calendar cal2 = Calendar.getInstance(); 
     cal2.setTime(d); 
     int i=10; 

     List<String> list3 = new ArrayList<String>(); 
     List<String> list4 = new ArrayList<String>(); 


     while(i<50) 
     { 

      cal1.add(Calendar.MINUTE, i); 
      String Start_Time = df.format(cal1.getTime()); 
      cal2.add(Calendar.SECOND, i); 
      String End_Time = df.format(cal2.getTime()); 
      list3.add(Start_Time); 
      list4.add(End_Time); 
      i=i+1; 
     } 
      File file = new File("output9.txt"); 
      FileOutputStream fos = new FileOutputStream(file); 
      PrintStream ps = new PrintStream(fos); 
      System.setOut(ps); 
      for (int j = 0,k=0;j < list3.size()&&k<list4.size(); j++,k++) { 
       String value3 = list3.get(j); 
       String value4 = list4.get(k); 
       System.out.println("\n"); 
       System.out.printf("%s%s%s",value3," ",value4); 
      } 

誰能幫我該怎麼辦呢?

在此先感謝...

回答

1

我想你的問題是添加你的startTimes。您將n分鐘添加到開始時間,但僅將此量添加到結束時間的秒數中。

所以你schould改變詮釋他while如下:

cal1.add(Calendar.MINUTE, i); 
String Start_Time = df.format(cal1.getTime()); 
cal2.add(Calendar.MINUTE, i); // add this line 
cal2.add(Calendar.SECOND, i); 
String End_Time = df.format(cal2.getTime()); 

如果你想真正的隨機範圍,你可以通過開始設置爲隨機時間實現這一目標,這個保存爲一個字符串到您的陣列和然後添加0到5小時之間的時間並將其添加到您的結束數組中。用於隨機範圍

Random rand = new Random(); 
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
Calendar calendar = Calendar.getInstance(); 

List<String> startTimes = new ArrayList<String>(); 
List<String> endTimes = new ArrayList<String>(); 

for (int i = 0; i < 50; i++) { 
    calendar.set(Calendar.HOUR_OF_DAY, 7 + rand.nextInt(7)); // Starting at 07:00:00 
    calendar.set(Calendar.MINUTE, rand.nextInt(60)); 
    calendar.set(Calendar.SECOND, rand.nextInt(60)); 
    String Start_Time = df.format(calendar.getTime()); 

    calendar.add(Calendar.HOUR, rand.nextInt(5)); 
    calendar.add(Calendar.MINUTE, rand.nextInt(60)); 
    calendar.add(Calendar.SECOND, rand.nextInt(60)); 
    String End_Time = df.format(calendar.getTime()); 
    startTimes.add(Start_Time); 
    endTimes.add(End_Time); 
} 

EDIT例如這將產生50個startTimes從7至最高5小時更長的14個endTimes。例如:

[13:38:56, 08:32:57, 08:50:15, 07:10:49, 13:48:06] 
[13:45:53, 08:36:29, 12:16:35, 11:19:06, 17:19:36] 
相關問題