Hoy me apetecía escribir en el blog xD, y en vez de dejarme cosas para días que no tenga nada que contar, voy a pegar aquí un pequeño script en php para que veáis como podéis hacer una cuenta atrás, o un contador de tiempo hacia delante con las funciones de tiempo que nos ofrece 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”;
}
}
Lee el resto de la entrada para ver la explicacion
He creado una funcion para poder reutilizar el codigo. Principalmente hacemos uso de las funciones time() y mktime().
Time es una función que devuelve la fecha actual en Epoch Unix (esto significa que nos devolverá la cantidad de segundos que han pasado desde el 1 de Enero de 1970) y mktime es otra función que nos devuelve la fecha que le pasemos por argumento en Epoch Unix (Osea en segundos desde el 1 de Enero de 1970).
Entonces para hacer la cuenta atras, calculamos la fecha del día y hora en la que termina la cuenta atras con mktime():
Ej para el 24 de Febrero del 2008 a las 16:30:
mktime(16, 30, 0 , 2, 24, 2008)
y nos devolvera 1203867000 que es como decir 24/02/2008 a las 16:30:00.
y ahora calculamos el dia de hoy a esta hora simplemente con time()
Ej para hoy 12 de Octubre del 2007 sobre las 21:41 aproximadamente.
time()
Y devuelve 1192218126. Entonces teniendo las fechas simplemente tenemos que restar para saber cuantos segundos faltan:
1203867000 – 1192218126 = 11648874 (Si no me he equivocado xD)
Pues quedan 11648874 segundos para que me pueda sacar el carnet B
pero dicho así no queda muy bonito.
Para eso simplemente tenemos que dividirlo para obtener minutos, segundos o lo que queramos.
Por Ejemplo:
echo (mktime(16, 30, 0, 2, 24, 2008) - time()) / (3600*24);
Eso nos devuelve un numero (con decimales) que nos indica los dias que quedan para que me saque el carnet B
PD: El codigo de arriba del todo, la función completa, puede que no funcione correctamente, la escribi hace mucho tiempo y ahora no encuentro donde falla, pero antes iba bastante bien.