У меня есть PHP-скрипт, который собирает временную метку в базе данных в формате HH: MM: SS. Затем у меня есть страница PHP, которая обновляется каждую секунду через AJAX, целью которой является создание скрипта, который каждый раз извлекает данные PHP, поэтому я могу делать такие вещи, как отображение таймера обратного отсчета. Я пытаюсь показать разницу в два раза в этом формате: HH: MM: SS. IE:
$currentstampedtime = date("H:i:s", strtotime("now"));
Производит:
19:29:34
(и правильно подсчитывается с моим сценарием ajax, отображается как часы.
$gametimestamp = date("H:i:s", strtotime($gametime));
Производит:
19:19:12
Потянув временную метку из моей БД, хранящейся в $ gametime.
То, что я пытаюсь сделать, – это различие между этими двумя эхо-сигналами в реальном времени, как таймер обратного отсчета, предполагая, что ajax обновляет страницу каждую секунду, как кажется.
$difference = ($currentstampedtime - $gametimestamp);
Ничего не делает. Когда я повторяю var,
echo $difference;
я получил
1
Ничего, что я пробовал, работает. Пожалуйста помоги. Заранее спасибо.
Вы можете использовать объект php DateTime
для создания вашего текущего времени и целевого времени. Затем используйте функцию diff()
объекта DateTime, чтобы получить разницу, и отформатируйте ее как «00:00:00».
т.е.:
$now = new DateTime(); $target = DateTime::createFromFormat('H:i:s', "01:30:00"); $difference = $now->diff($target); echo $difference->format("%H:%I:%S");
Вывод :
00:57:48
Надеюсь, поможет.
Вот ваш ответ:
<?php $difference = time()-strtotime($gametime); // You can retrieve the difference as time echo $currentstampedtime = date("H:i:s", $difference); ?>
ОБНОВИТЬ
Другое решение
<?php function get_time_difference($time1, $time2) { $time1 = strtotime("1980-01-01 $time1"); $time2 = strtotime("1980-01-01 $time2"); if ($time2 < $time1) { $time2 += 86400; } return date("H:i:s", strtotime("1980-01-01 00:00:00") + ($time2 - $time1)); } echo get_time_difference("10:25:30", "22:40:59"); // 12:15:29 ?>