Как найти разницу между двумя временами?

Функция контроллера для вставки времени:

$input = $this->input->post('shiftStartTime');
$input = str_replace(" : ", ":", $input);
$shiftstarttime = date('H:i:s', strtotime($input));

$input2 = $this->input->post('shiftEndTime');
$input2 = str_replace(" : ", ":", $input2);
$shiftEndTime = date('H:i:s', strtotime($input2));

Я хочу взять разницу во времени в 2 раза

Вот мой код, но он показывает неверную разницу во времени. Как его решить?

$input3 = $this->input->post('shiftEndTime')-$this->input->post('shiftStartTime');
$input3 = str_replace(" : ", ":", $input3);
$duration = date('H:i:s', strtotime($input3));

использовать функцию date_diff()

Bilal Ahmed 07.09.2018 07:23

@ Билал Ахмед, как

Saclt7 07.09.2018 07:24

@ Saclt7, я добавил ответ с более подробной информацией

Bilal Ahmed 07.09.2018 07:30

какой формат у ваших дат shiftStartTime и shiftEndTime?

sintakonte 07.09.2018 07:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
161
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Существует несколько способов рассчитать разницу между двумя временами.

   // example 1
$time1 = "08:00:00";
$time2 = "13:40:00";

echo "Time difference: ".get_time_difference($time1, $time2)." hours<br/>";

// example 2
$time1 = "22:00:00";
$time2 = "04:00:00";

echo "Time difference: ".get_time_difference($time1, $time2)." hours<br/>";

function get_time_difference($time1, $time2)
{
    $time1 = strtotime("1/1/1980 $time1");
    $time2 = strtotime("1/1/1980 $time2");

if ($time2 < $time1)
{
    $time2 = $time2 + 86400;
}

return ($time2 - $time1) / 3600;

}

ссылка на исходный код

Профиль автора

Здесь разница во времени хранится в базе данных как 00:00:00.

Saclt7 07.09.2018 07:35
print_r($this->input->post('shiftStartTime')) распечатайте эту строку и покажите мне результат
Bilal Ahmed 07.09.2018 07:36

Теперь разница показана, но это неправильное значение

Saclt7 07.09.2018 07:45

Результат - 3:14 утра.

Saclt7 07.09.2018 07:45
Ответ принят как подходящий

попробуйте с этой функцией diff

<?php
$input = $this->input->post('shiftStartTime');
$input = str_replace(" : ", ":", $input);
$shiftstarttime = date('H:i:s', strtotime($input));

$input2 = $this->input->post('shiftEndTime');
$input2 = str_replace(" : ", ":", $input2);
$shiftEndTime = date('H:i:s', strtotime($input2));
echo date_create($shiftEndTime)->diff(date_create($shiftstarttime))->format('%H:%i:%s');
?>
use below code to find the time difference between two times.

$input = $this->input->post('shiftStartTime');
$input = str_replace(" : ", ":", $input); 
$input2 = $this->input->post('shiftEndTime');
$input2 = str_replace(" : ", ":", $input2);   
$date_a = new DateTime($input);
$date_b = new DateTime($input2);
$interval = date_diff($date_a,$date_b);
$diff = $interval->format('%h:%i:%s');

Другие вопросы по теме