Как вычитать определенное время с системным временем в php?


Как я могу сделать переменную $ всего меня из результата в формате времени? Теперь с этим кодом единственное, что мне удается, это вычесть часы, но не минуты, и он показывает мне только число. пример: 07:45 - 03:35 = 4. я хотел бы, чтобы вместо того, чтобы дать мне 4 мне что-то вроде: 03:10.

$fin = '07:45';               
$hora = date("H:i");  
$total = $fin - $hora;

echo "EL evento empezara en $total";
Author: Luis Cesar, 2018-06-13

2 answers

Простой функции должно быть достаточно для вычитания часов:

Выполните следующие действия:

$hora_actual=date("H:i");
$fin = '07:45'; 
$resultado=date("H:i:s",strtotime("00:00") +strtotime($fin) - strtotime($hora_actual) );
echo $resultado;

Это должно работать, но имейте в виду, что date("H:i") выводит текущее время в соответствии с часовым поясом вашего сервера, поэтому эта настройка остается для вас.

Также помните, что он будет работать только в вычитании horas и не будет принимать во внимание даты.

 1
Author: Shassain, 2018-09-04 15:15:09

Вы можете создать два объекта DateTime, один с фиксированным временем 07:45 и один с текущим временем.

Затем вы используете diff для вычисления разницы между двумя объектами, выполняя вычисления по различным группам различий в объекте, который бросит вас diff.

Например:

$dateStart = new DateTime("07:45:00");
$dateEnd   = new DateTime();
$dateInterval = $dateEnd->diff($dateStart);

$strResult = sprintf(
    '%d:%02d:%02d', //formato de salida
    ($dateInterval->d * 24) + $dateInterval->h, //horas
    $dateInterval->i, //minutos
    $dateInterval->s  //segundos
);
echo "El evento empezará en $strResult";

Использование diff - лучший способ вычислить различия между датами, поскольку он дает вам полный объект со всеми видами различий. Чтобы вы поняли, это вся информация, которая будет в объекте $dateInterval кода выше. Это позволит вам узнать, если это необходимо, не только сколько часов/минут / секунд между двумя датами, но и сколько недель, месяцев, лет ... и больше информации.

object(DateInterval)#3 (15) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(0)
  ["d"]=>
  int(0)
  ["h"]=>
  int(3)
  ["i"]=>
  int(5)
  ["s"]=>
  int(50)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  int(0)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
 1
Author: A. Cedano, 2018-06-13 02:43:58