#java
#java
Вопрос:
Мне нужно сгенерировать список времени начала и окончания в 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()amp;amp;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:
Я думаю, ваша проблема заключается в добавлении вашего времени начала. Вы добавляете n минут к времени начала, но добавляете это количество только к секундам времени окончания.
Итак, вы должны изменить следующий int он 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);
}
Это привело бы к увеличению времени начала 50 с 7 до 14 и времени окончания максимум на 5 часов.
Пример:
[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]