2016-10-07 5 views
1

Что-то правильно не работает со следующим кодом, и я схожу с ума, пытаясь понять, почему это не правильно расчета:PHP расчета часов

$hours = date('H:i' , strtotime('03:00') - strtotime('02:00')); 

echo $hours; 

Результат: 02:00

Ожидаемый результат: 01:00

Может ли кто-нибудь помочь мне угадать, что происходит не так?

02:00 as the result

+0

Но при попытке запустить свой код его шоу '01: 00' – Karthi

+1

@Albzi спасибо за ваш ответ. Когда я использую только одно strtotime, он вычисляется правильно. –

ответ

2

Вы, вероятно, хотите что-то вроде этого: вместо

$hours = date('H:i' , strtotime('03:00 - 02:00')); 

Или даже:

$hours = date('H:i' , strtotime('03:00 - 2 hours')); 

Это будет печатать 01:00.

https://3v4l.org/on4JH

+0

над этим тоже работает – Karthi

+0

@LifeTimeProgrammer Посмотрите на эту ссылку: https://3v4l.org/EIZ4s Показывает поведение OP, которого он не хочет. – Albzi

+0

да, я поднял глаза. но когда мой «локальный сервер» работает так же, как и ваш код. – Karthi

3

Вы можете использовать DateTime объект для ее выполнения:

$date1 = new DateTime('03:00'); 
$date2 = new DateTime('02:00'); 
$dateInterval = $date1->diff($date2); 

echo $dateInterval->format('%H:%S'); // result would be 01:00 
Смежные вопросы