Q:

Помогите с логическими выражениями

Здравствуйте! вот код
    <?
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";
}

?>

Который выдаёт: 
Что никак не является актуальной, в чём проблема и как ее решить?

A:

Итак
Функция 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

