Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/01/2014, 13:26
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: contador regresivo

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
  1. date_default_timezone_set("America/Lima");
  2. $registro = "2014-01-04 14:00:00"; //Fecha de registro
  3. $dia = 86400; //Segundos en un día
  4. $limite = date("Y-m-d H:i:s", (strtotime($registro) + ($dia * 27))); //Fecha límite
  5. $hoy = strtotime(date("Y-m-d H:i:s")); //Fecha actual en segundos
  6. $diferencia = strtotime($limite) - $hoy; //Diferencia entre la fecha límite y la fecha actual
  7.  
  8. echo "Fecha de registro: " . $registro . "\n";
  9. echo "Fecha límite: " . $limite . "\n";
  10.  
  11. if ($diferencia > 0){
  12.     $dias = $diferencia / $dia;
  13.     $horas = substr($dias, strpos(".", $dias)+1) * 24;
  14.     echo "Le quedan " . (int)$dias . " días";
  15.     if ($horas > 0) echo " y " . (int)$horas . " horas";
  16. }

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 original
  1. Fecha de registro: 2014-01-04 14:00:00
  2. Fecha límite: 2014-01-31 14:00:00
  3. 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
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 27/01/2014 a las 13:40