Solamente necesitas convertir las fechas a segundos, restar la fecha límite con la fecha actual, dividir dicho resultado entre la cantidad de segundos que hay en un día y así obtendrás la cantidad de días que le quedan al usuario para registrarse, por ejemplo:
Código PHP:
Ver original$registro = "2014-01-04 14:00:00"; //Fecha de registro
$dia = 86400; //Segundos en un día
$limite = date("Y-m-d H:i:s", (strtotime($registro) + ($dia * 27))); //Fecha límite $hoy = strtotime(date("Y-m-d H:i:s")); //Fecha actual en segundos $diferencia = strtotime($limite) - $hoy; //Diferencia entre la fecha límite y la fecha actual
echo "Fecha de registro: " . $registro . "\n";
echo "Fecha límite: " . $limite . "\n";
if ($diferencia > 0){
$dias = $diferencia / $dia;
echo "Le quedan " . (int)$dias . " días";
if ($horas > 0) echo " y " . (int)$horas . " horas";
}
Si la diferencia entre la fecha límite y la fecha actual es mayor a cero, es decir, si todavía no hemos llegado a la fecha límite, transformo dicha diferencia dada en segundos a días dividiendo la diferencia entre la cantidad de segundos en un día. Como dicha división probablemente arroje un número como varios decimales y por obvias razones no podemos mostrar un resultado así en pantalla, calculo la cantidad de horas que equivale la parte decimal del resultado anterior, multiplicándola por las 24 horas que hay en un día. Luego, al momento de mostrar los días restantes, convierto el resultado a entero, para mostrar solamente la parte entera y no los decimales y lo mismo hago con la hora.
Este es el resultado del algoritmo que propongo a las 14:43:00 horas del 27 de enero:
Código HTML:
Ver originalFecha de registro: 2014-01-04 14:00:00
Fecha límite: 2014-01-31 14:00:00
Le quedan 3 días y 22 horas
Si gustas, también puedes mostrar minutos y segundos, solamente tienes que ir tomando la parte decimal de cada resultado, empezando ahora por el valor de
$horas.
Saludos