Здравствуйте! вот код
<?
date_default_timezone_set("UTC");
$time = time(); // Вот это значение отправляем в базу
$offset = 3; // Допустим, у пользователя смещение относительно Гринвича составляет +3 часа
$time += 3 * 3600;
$a = strtotime(date("H:i:s", $time));
$b = strtotime($post['time']);
?>
<? echo date("H:i:s",$a)?> - <br> <?echo date("H:i:s",$b) ?> =
<?
if($a>$b){
if(($b-$a)>60*60){
echo date("H", $a - $b). " hours remaining";
}else{
echo date("i", $a - $b). " minutes ago";
}
}elseif($b==$a){
echo 'Live';
}else{
echo date("H", $b - $a). " hours ago";
}
?>
Который выдаёт: Что никак не является актуальной, в чём проблема и как ее решить?
Итак
Функция date
date — Форматирует вывод системной даты/времени
string date ( string $format [, int $timestamp = time() ] )
Возвращает строку, отформатированную в соответствии с указанным шаблоном format. Используется метка времени, заданная аргументом timestamp, или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time().
Функция time
time — Возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) до текущего времени.
$a = date("H:i:s", $time);
В переменной $a
и переменной $b
хранится строка вида ="8:24:00".
При этом мы помним что функция date()
принимает в качестве второго аргумента целое число.
date("i", $b - $a)
В вашем же примере вы передаёте туда разность двух строк
В качестве эксперимента посмотрим что получится в результате вычитания одной сформатирванной строки из другой:
<?php
$a="8:24:00";
$b="8:23:00";
echo $a-$b;
?>
output:
>0
Что и следовало ожидать.
Дальше вы передаёте ноль в функцию date()
<?php
echo date("i",0);
?>
output:
>00
Ровно это мы и видем на скриншоте.
Вам следовало воспользоваться функцией strtotime()
И хранить в переменных количество секунд в виде целого числа.
Их гораздо проще сравнивать и вычитать.
$a = time()+3*60*60;
$b = strtotime($post['time']);
Учтём, что Вы заменили поле с формата TIME на DATETIME.
Если разница во времени больше суток, то выведем количество оставшихся дней.
Если разница во времени больше месяца, то выведем количество оставшихся месяцев.
Если разница во времени больше года, то выведем количество оставшихся лет.
Т.к. нам не нужна лишняя детализация в функции будет возвращать максимальныый возможный разряд.
Чтобы не повторять несколько раз лапшу из if'ов выделим это дело в отдельную функцию.
В итоге получается вот так:
<?
date_default_timezone_set("UTC");
$a = time()+3*60*60;
$b = strtotime($post['time']);
?>
<? echo date("d.m.Y H:i:s",$a)?> - <br> <?echo date("d.m.Y H:i:s",$b) ?> =
<?
function time_diff_format($diff){
if (($diff) > 86400*365)
return round($diff/(86400*365)) . " years ";
if (($diff) > 86400*31)
return round($diff/(86400*30)) . " months ";
if (($diff) > 86400)
return round($diff/(86400)) . " days ";
if (date("H", $diff) != "00")
return round($diff/(3600)) . " hours ";
if (date("i", $diff) != "00")
return round($diff/(60)) . " minutes ";
}
if($b>$a){
echo datetime_diff($b - $a)." remaining";
}elseif(($a==$b) || $post['live']==1){
echo datetime_diff($a - $b)." ago, <span style='color: #72A326; text-shadow: 1px 1px 0px #4A7010; font-weight: bold;'> LIVE</span>";
}else{
echo datetime_diff($a - $b)." ago";
}
К сожалению, вопрос получился очень обширным и я не могу изложить всё что хотел, но как автор ответа, я рекомендую для таких целей классы DateTime и DateInterval.
http://php.net/manual/ru/class.datetime.php
http://php.net/manual/ru/class.dateinterval.php
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хей! Упорно, но безуспешно пытаюсь достучаться до сервера с помощью curlХочу получить ответ но в итоге получаю сообщение о ошибки ключа api
Задача: Есть форма добавления изображений, файлов, текстовКогда заполняем форму и отправляем, сначала загружаются изображения, файлы, а только...
Здравствуйте, начал делать аутентификацию в проекте на Symfony 3(пишу на нем впервые) и столкнулся с такой проблемойПисал код на основе документации,...
Есть меню, подгружаю через jquery страницу php, содержащую форму, вот только js код игнорирует preventDefault и в итоге форма отправляется, и меня кидает...