在Java中生成开始时间和结束时间列表

在Java中生成开始时间和结束时间列表,java,Java,我需要在Java中生成一个开始时间和结束时间的列表,这样,结束时间总是大于开始时间,并且开始时间和结束时间之间的差异必须最大为5小时 时间格式可以是24小时或12小时 我尝试了这段代码,但并非所有开始时间和结束时间都满足开始时间和结束时间标准之间的差异: String myTime = "07:00:00"; SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); Date d = df

我需要在Java中生成一个开始时间和结束时间的列表,这样,结束时间总是大于开始时间,并且开始时间和结束时间之间的差异必须最大为5小时

时间格式可以是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);
            }
String myTime=“07:00:00”;
SimpleDataFormat df=新的SimpleDataFormat(“HH:mm:ss”);
日期d=df.parse(myTime);
Calendar cal1=Calendar.getInstance();
cal1.设定时间(d);
Calendar cal2=Calendar.getInstance();
cal2.设定时间(d);
int i=10;
List list3=新的ArrayList();
List list4=新的ArrayList();

而(i我猜你的问题在于增加了开始时间。你在开始时间上增加了n分钟,但只在结束时间的秒数上增加了这个数量

因此,您可以在
期间更改以下内容:

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);
}
[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]