Привет.
В своём ответе я покажу реализацию твоей задачи на PHP, и постараюсь объяснить подробнее каждый шаг.
Для теста я сделал простую форму с textarea, которая отдает данные на PHP через POST:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Blasthack - answer by USEC</title>
</head>
<body>
<form class="" action="/test.php" method="post">
<textarea name="dates" rows="8" cols="80"></textarea>
<button type="submit" name="button">Go</button>
</form>
</body>
</html>
В мире программистов существует парадигма разработки алгоритмов, которая именуется как "разделяй и властвуй". Принцип прост, мы делим задачу на мелкие и легко решаемые задачи, чтобы в конечном счете решить общую задачу.
1. Полученные даты с формы мы преобразуем в массив, где каждая ячейка массива будет соответствовать одной дате.
2. Преобразуем полученные данные (массив из пункта 1) под формат даты.
3. Соберем часы, минуты и секунды в три массива hours, min, sec.
4. Найдем сумму часов, минут и секунд.
5. Произведем конечные расчеты времени, если минут или секунд более 60, то переведем их в часы и минуты соответственно.
Ниже я разместил код на PHP с комментариями.
if(isset($_POST['dates'])) {
// Преобразуем полученные данные с формы в массив
$data_array = explode(')', $_POST['dates']);
// Преобразуем полученный массив в многомерный массив под формат даты
$i = 0;
foreach($data_array as $da)
{
$data_format_array[$i] = date_parse_from_format("Y-m-d (H:i:s", $da);
$i++;
}
// Теперь соберем часы, минуты и секунды в массивы
$i = 0;
foreach($data_format_array as $dfa)
{
$hours[$i] = $dfa['hour'];
$min[$i] = $dfa['minute'];
$sec[$i] = $dfa['second'];
$i++;
}
// Находим сумму часов, минут и секунд
$sum_hours = array_sum($hours);
$sum_min = array_sum($min);
$sum_sec = array_sum($sec);
// Если минут или секунд больше 60, то переводим их в часы или минуты
if($sum_min >= 60)
{
$sum_hours += intval($sum_min/60);
$sum_min = $sum_min % 60;
}
if($sum_sec >= 60)
{
$sum_min += intval($sum_sec/60);
$sum_sec = $sum_sec % 60;
}
// Выведем на экран полученные значения
echo $sum_hours.' часов, '.$sum_min.' минут, '.$sum_sec.' секунд.';
}
Для демонстрации работы кода я использовал те значения, которые указаны в твоем вопросе. Вот результат:
Посмотреть вложение 111271