добавьте две или более строки времени в php

У меня есть массив со временем (строка), например «2:23», «3: 2: 22» и т. Д.

$times = array("2:33", "4:2:22", "3:22") //loner 

Я хочу найти общую сумму всего массива.

Есть ли способ, которым я мог бы добавить такие времена, как «2:33» и «3:33» («i: s»)

благодаря

Related of "добавьте две или более строки времени в php"

Нет встроенного способа сделать это – все временные функции работают во времени, а не в продолжительности. В вашем случае вы можете explode() и добавить детали отдельно. Я бы рекомендовал написать класс. Простой пример:

 class Duration { public static function fromString($string) { $parts = explode(':', $string); $object = new self(); if (count($parts) === 2) { $object->minutes = $parts[0]; $object->seconds = $parts[1]; } elseif (count($parts) === 3) { $object->hours = $parts[0]; $object->minutes = $parts[1]; $object->seconds = $parts[2]; } else { // handle error } return $object; } private $hours; private $minutes; private $seconds; public function getHours() { return $this->hours; } public function getMinutes() { return $this->minutes; } public function getSeconds() { return $this->seconds; } public function add(Duration $d) { $this->hours += $d->hours; $this->minutes += $d->minutes; $this->seconds += $d->seconds; while ($this->seconds >= 60) { $this->seconds -= 60; $this->minutes++; } while ($this->minutes >= 60) { $this->minutes -= 60; $this->hours++; } } public function __toString() { return implode(':', array($this->hours, $this->minutes, $this->seconds)); } } $d1 = Duration::fromString('2:22'); $d1->add(Duration::fromString('3:33')); echo $d1; // should print 5:55 

Возможно, вам захочется взглянуть на функции даты и времени PHP – одним из вариантов было бы использовать что-то вроде strtotime ():

 $midnight = strtotime("0:00"); // ssm = seconds since midnight $ssm1 = strtotime("2:33") - $midnight; $ssm2 = strtotime("3:33") - $midnight; // This gives you the total seconds since midnight resulting from the sum of the two $totalseconds = $ssm1 + $ssm2; // will be 21960 (6 hours and 6 minutes worth of seconds) // If you want an output in a time format again, this will format the output in // 24-hour time: $formattedTime = date("G:i", $midnight + totalseconds); // $formattedTime winds up as "6:06" 

Итак, вы хотите добавить продолжительность к времени, то есть добавить несколько часов, минут и секунд до времени?

Возможно, вы можете использовать strtotime Дава, чтобы получить секунды с полуночи на время, а затем добавить продолжительность с помощью sscanf, таким образом:

 $midnight = strtotime("0:00"); // ssm = seconds since midnight $ssm1 = strtotime("2:33") - $midnight; // sscanf the time string... you might need to include the possibility of seconds list($hour, $minute) = sscanf("3:33", "%d:%d"); // a $answer_ssm = $ssm + $hour * 3600 + $minute * 60; echo strftime("%H:%M:%S", $answer_ssm); 

Не могу проверить это, откуда я так PLS оправдывать любые синтаксические ошибки … просто пытаюсь привести пример. Разумеется, вам также потребуется повторить выбор по вашему массиву.