Есть три времени, получаемые из БД (Время прихода, время ухода и перерывы). Пробую делать так:
$time1 = strtotime($row['3']); // Время выключения
$time2 = strtotime($row['2']); //Время включения
$time3 = strtotime($row['4']); //Перерывы
$diff = $time1-$time2-$time3;
$summi = floor($diff);
Считает не совсем правильно. К примеру:
Время включения: 04:47:00
Время выключения: 05:33:00
Перерывы: 00:07:33
Должно получиться 00:38:27 а получается 20:38:27
Что не так?
Можно воспользоваться DateInterval
для корректного вычисления разницы.
Если я правильно понял, $row[4]
содержит суммарное количество секунд на перерывы.
$row = [
'2' => '2017-02-06 08:00:00',
'3' => '2017-02-06 18:10:00',
'4' => 3660
];
$dateOn = new \DateTime($row['2']);
$dateOff = new \DateTime($row['3']);
$delays = (int)$row['4'];
$dateOn->add(new DateInterval('PT'.$delays.'S'));
$time = $dateOff->diff($dateOn);
echo $time->format('%H:%I:%S'); // 09:09:00
$row = [
'2' => '06:25:00',
'3' => '07:00:00',
'4' => '00:10:00'
];
$dateOn = new \DateTime($row['2']);
$dateOff = new \DateTime($row['3']);
if ($dateOn > $dateOff) {
$dateOff->add(DateInterval::createFromDateString('1 day'));
}
if ($row['4']) {
list($h, $i, $s) = explode(':', $row[4]);
$dateOn->add(new DateInterval("PT{$h}H{$i}M{$s}S"));
}
$time = $dateOff->diff($dateOn);
echo $time->format('%H:%I:%S'); // 00:25:00
Этот формат очень неудачен:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Уже Обновление ICU на PHP7 обсуждалось: Скомпилил в папку /opt/icu5c, а дальше просто не понял, что нужно сделать! А как же активировать
У меня есть некоторое изображениеМне нужно с помощью imagick создать для него квадратное превью, но дело в том, что изображение может быть любой...