Давайте начнем с рассмотрения подхода, который вы выбираете, подхода String .Это определенно выполнимо.Код для этого ниже.
public static void main(String [] args) {
String time1 = "12:09:47";
String time2 = "14:20:55";
List<String> times = getAllTimeValues(time1, time2);
}
public static ArrayList<String> getAllTimeValues(String time1, String time2) {
ArrayList<String> times = new ArrayList<String>();
times.add(time1);
while (!time1.equals(time2))
times.add(time1 = addOneSecond(time1));
return times;
}
public static String addOneSecond(String time) {
String[] HoursMinutesSeconds = time.split(":");
int hours = Integer.parseInt(HoursMinutesSeconds[0]);
int minutes = Integer.parseInt(HoursMinutesSeconds[1]);
int seconds = Integer.parseInt(HoursMinutesSeconds[2]);
if (seconds == 59) {
if (minutes == 59) {
hours++;
minutes = 0;
seconds = 0;
} else {
minutes++;
seconds = 0;
}
} else {
seconds++;
}
return String.format("%02d", hours) + ":" +
String.format("%02d", minutes) + ":" +
String.format("%02d", seconds);
}
Не так уж и плохо, этот подход выполняет работу за довольно короткий объем кода.Большая часть работы выполняется с помощью метода addOneSecond, который проверяет, равны ли секунды 60, а затем минуты 60.
Однако есть более простой подход.В Java 8 они изменили даты и время, и с ними очень легко работать.Давайте рассмотрим другой способ сделать то же самое, что и код выше.
public static void main(String [] args) {
LocalTime time1 = LocalTime.of(12, 9, 47);
LocalTime time2 = LocalTime.of(14, 20, 55);
List<String> times = new ArrayList<String>();
while (time1.isBefore(time2)) {
times.add(time1.format(DateTimeFormatter.ISO_LOCAL_TIME).toString());
time1 = time1.plusSeconds(1);
}
}
Это значительно меньше кода, чем в первом примере!Опять же, в Java 8 вы можете работать с этими статическими членами классов Date и Time.Намного проще все время проверять.