Es que date() no te devuelve las horas, minutos y segundos restantes. Te diche la fecha (en este caso la hora) en ese momento...
Después de la operación, quizá te de los segundos transcurridos en el 18 de Agosto de 1978 a las 18:19 (es un ejemplo), y lo que te dirá es 18:19...
Para hacer cuenta atrás, prueba esta función que encontré con Google (
Fuente)
Código PHP:
function countdown($hor,$min,$seg,$mes,$dia,$ano) {
//mktime(hora, min, seg , mes, dia, anyo)
$final_day= mktime($hor,$min,$seg,$mes,$dia,$ano); //Calculamos la fecha unix del dia final
$hoy_exed = time(); //Calculamos la fecha unix de hoy
if ($final_day > $hoy_exed) //Si la fecha final es mayor a la de hoy
{
$remaining = $final_day - $hoy_day; //Averiguamos cuantos segundos quedan para el dia d y hora h
$hora = $remaining/3600; //Dividimos los segundos entre 3600 para obtener las horas que quedan.
$minx = explode(".",$hora); //Extraemos parte entera y decimal
$min = ("0.".$minx[1]) * 60; //Multiplicamos por 60 para saber cuantos minutos quedan
$segx = explode(".",$min); //Extraemos parte entera y decimal
$segd = ("0.".$segx[1]) * 60; //Multiplicamos por 60 para saber cuantos segundos quedan.
$seg = explode(".",$segd); //Desechamos parte decimal
return "$minx[0]h:$segx[0]m:$seg[0]s"; //Devolvemos un string formateado con lo que queda.
}
else
{
return "Fin";
}
}