Сумма двух раз (ЧЧ: ММ: СС)

у меня 4 свидания

   datatime1= 2018-10-01 13:00:00
datatime2= 2018-10-01 13:59:00
datatime3= 2018-10-01 14:29:00
datatime4= 2018-10-01 15:29:00

поэтому мне нужно получить этот результат

PART1: datatime [2] -datatime [1] = 0: 59: 0

PART2: datatime [3] -datatime [2] = 0: 30: 0

PART3: datatime [4] -datatime [3] = 1: 0: 0

PART4: PART1 + PART3 = 1: 59: 0

ИДК, если это правильный путь, но я могу получить результат для Часть1, часть2 а также
Part3 но я не знаю, как получить результат для ч.4

 $time1 = new DateTime('2018-10-01 13:00:00');
$time2 = new DateTime('2018-10-01 13:59:00');
$time3 = new DateTime('2018-10-01 14:29:00');
$time4 = new DateTime('2018-10-01 15:29:00');


$part1= date_diff($time2,$time1)->format('%h:%i:%s');
$part2= date_diff($time3,$time2)->format('%h:%i:%s');
$part3= date_diff($time4,$time3)->format('%h:%i:%s');

0

Решение

Создать DateTime и установите его, например, в полночь 00:00:00, date_diff возвращает DateInterval который вы можете добавить к дате и времени. Наконец, получите различий с полуночи снова.

$part4 = (new DateTime('midnight'))
->add(date_diff($time2, $time1))
->add(date_diff($time4,$time3))
->diff(new DateTime('midnight'))
->format('%h:%i:%s');

echo $part4; // 1:59:0

демонстрация

1

Другие решения

Я предполагаю, что ваш пример неверен, поскольку part1 + part2 приведет к 1:29, а не 1:59.

Объяснение можно найти в виде комментариев в коде.

<?php

$time1 = new DateTime('2018-10-01 13:00:00');
$time2 = new DateTime('2018-10-01 13:59:00');
$time3 = new DateTime('2018-10-01 14:29:00');
$time4 = new DateTime('2018-10-01 15:29:00');


$part1= $time1->diff($time2)->format('%h:%i:%s');
$part2= $time2->diff($time3)->format('%h:%i:%s');
$part3= $time3->diff($time4)->format('%h:%i:%s');

$part4 = new DateTime('00:00'); // Create a 00:00 DateTime so we can use it for calculation
$part4Clone = clone $part4;
$part4->add($time1->diff($time2)); // Add $part1 (difference between $time1 and $time2)
$part4->add($time2->diff($time3)); // Add $part2 (difference between $time2 and $time3)
$part4 = $part4->diff($part4Clone)->format('%h:%i:%s'); // Calculate difference between 00:00 and $part1+$part2 and format it accordingly

var_dump($part1,$part2,$part3,$part4);

https://3v4l.org/B8Im8

Выход для 5.6.38 — 7.3.0rc4

строка (6) «0: 59: 0»

строка (6) «0: 30: 0»

строка (5) «1: 0: 0»

строка (6) «1: 29: 0»

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector