2016-05-03 3 views
0

Мне нужно рассчитать разницу во времени в PHP-скрипте. Имеются значения времени и времени. Я написал следующий код, чтобы получить разницу. Но он всегда возвращает правильный ответ + 1 значение.

$inTime = '08:30:00'; 
$outTime = '17:48:00'; 
$difference = date('H:i',((strtotime($outTime) - strtotime($inTime)))); 
echo $difference; 

Отложенный шрифт напечатан как 10:18. Но выход должен быть 09:18. Я использую фреймворк Codeigniter. Я запускаю этот код с помощью онлайн-тестера php (http://phptester.net/) и возвращает правильное значение.

+0

вы уверены, что StrToTime позволяет "H: я: s" формат? – Random

+0

Конечно. Код корректно запущен в http://phptester.net/ – Hirantha

+0

, а phptester.net дает правильный результат ... так что это может быть проблема с окружающей средой ... какая у вас версия php? – Random

ответ

0
function datediff($date1, $date2) 
{ 
    $diff = abs(strtotime($date1) - strtotime($date2)); 

    return sprintf 
    (
     "%d Days, %d Hours, %d Mins, %d Seconds", 
     intval($diff/86400), 
     intval(($diff % 86400)/3600), 
     intval(($diff/60) % 60), 
     intval($diff % 60) 
    ); 
} 

$inTime = '08:30:00'; 
$outTime = '17:48:00'; 
print datediff($inTime, $outTime) . "\n"; 

Интернет Демо: Click Here

Только для протокола:

function datediff($date1, $date2) 
{ 
    $diff = abs(strtotime($date1) - strtotime($date2)); 

    return sprintf 
    (
     "%d Mins", 
     intval(((($diff % 86400)/3600) * 60)) 
    ); 
} 

$inTime = '08:30:00'; 
$outTime = '17:48:00'; 

print datediff($inTime, $outTime) . "\n"; 

Выход

558 Mins 

Интернет Демо: Click Here

+0

Отлично. Если я хочу получить разницу в минутах, как мне это сделать. – Hirantha

+0

Почему минус голосование? – RJParikh

+0

Я не знаю .. Я этого не делаю. Но я исправляю это. Итак, как мне получить всю разницу в минутах? – Hirantha

0

Есть много способов сделать это, лично я бы использовал встроенные функции разности во времени PHP.

$inTime = date_create('08:30:0'); 
$outTime = date_create('17:48:00'); 
$difference = date_diff($inTime, $outTime); 
echo $difference->format('%H:%I:%S'); 

выходы:

09:18:00

example

1

проверить этот метод ...

<?php 

$time1 = new DateTime('08:30:00'); 
$time2 = new DateTime('17:48:00'); 
$interval = $time2->diff($time1); 
echo "Time Difference : ".$interval->format('%H hours %i minutes %s seconds'); 

?> 

Это выведет:

Time Difference : 09 hours 18 minutes 0 seconds 
+0

@Random извините, я сделал это по ошибке .. теперь я отредактировал ответ с помощью нового метода ... –

+0

@Hirantha Вы должны попробовать этот метод ... Надеюсь, он сработает для вас. –

Смежные вопросы