Foros del Web » Programando para Internet » PHP »

problema con funcion date()

Estas en el tema de problema con funcion date() en el foro de PHP en Foros del Web. Buenas tardes, Tengo un problema con la función date(), les explico, necesito hacer una especie de cuenta atrás desde una fecha que tengo en la ...
  #1 (permalink)  
Antiguo 24/06/2008, 12:37
Avatar de AdRiAnCeTe  
Fecha de Ingreso: marzo-2007
Mensajes: 140
Antigüedad: 17 años, 1 mes
Puntos: 0
problema con funcion date()

Buenas tardes,

Tengo un problema con la función date(), les explico, necesito hacer una especie de cuenta atrás desde una fecha que tengo en la base de datos del formato "0000-00-00 00:00:00", y necesito saber lo que queda desde el momento en que ejecuto el php hasta la fecha sacada de la base de datos, aqui les dejo el codigo que tengo:

Código PHP:
$tiempoIni = ("2008-06-24 21:27:00");

                
$timeAhora time();

            
$queda $tiempoIni $timeAhora;

            echo 
date("H:i:s",$queda); 
Cuando voy a imprimir esta ultima linea me saca los minutos y segundos bien, excepto la hora..que me suma 1, es decir, cuando quedan 0horas, 10minutos y 10 segundos, me dice que queda 1hora, 10minutos y 10 segundos..

Alguien sabe porque puede pasar esto??

UN saludo y gracias!
  #2 (permalink)  
Antiguo 24/06/2008, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con funcion date()

Hola AdRiAnCeTe,

Te recomiendo usar strtotime para convertir tu fecha en un timestamp y entonces puedas obtener la diferencia.

Saludos.
  #3 (permalink)  
Antiguo 24/06/2008, 12:42
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: problema con funcion date()

time() te da el tiempo en formato de TIEMPO UNIX, es decir, te da el número de segundos (transcurridos desde 1970)

La fecha debes pasarla a este formato para que sean los dos iguales.

Código PHP:
$tiempoIni "2008-06-24 21:27:00";
$tiempoIni strtotime($tiempoIni);

$timeAhora time();

$queda $tiempoIni $timeAhora;

echo 
"Quedan ".$queda." segundos; 
  #4 (permalink)  
Antiguo 24/06/2008, 12:57
Avatar de AdRiAnCeTe  
Fecha de Ingreso: marzo-2007
Mensajes: 140
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: problema con funcion date()

Cita:
Iniciado por david_M_G Ver Mensaje
time() te da el tiempo en formato de TIEMPO UNIX, es decir, te da el número de segundos (transcurridos desde 1970)

La fecha debes pasarla a este formato para que sean los dos iguales.

Código PHP:
$tiempoIni "2008-06-24 21:27:00";
$tiempoIni strtotime($tiempoIni);

$timeAhora time();

$queda $tiempoIni $timeAhora;

echo 
"Quedan ".$queda." segundos; 
Si, disculpar pero es que esa linea no la añadí, pero ya la tenia puesta. Sigue sin funcionarme, probar vosotros mismos el ejemplo ese que me pusisteis..

Gracias de antemano!
  #5 (permalink)  
Antiguo 24/06/2008, 13:00
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: problema con funcion date()

Cita:
Quedan 1659 segundos
Funciona perfectamente. Sólo me dejé una comilla al final del todo, pero vaya, eso es que ni te lo has mirado

Código PHP:
$tiempoIni "2008-06-24 21:27:00";
$tiempoIni strtotime($tiempoIni);

$timeAhora time();

$queda $tiempoIni $timeAhora;

echo 
"Quedan ".$queda." segundos"//Aqui faltaba la ultima comilla 
  #6 (permalink)  
Antiguo 24/06/2008, 13:07
Avatar de AdRiAnCeTe  
Fecha de Ingreso: marzo-2007
Mensajes: 140
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: problema con funcion date()

Cita:
Iniciado por david_M_G Ver Mensaje
Funciona perfectamente. Sólo me dejé una comilla al final del todo, pero vaya, eso es que ni te lo has mirado

Código PHP:
$tiempoIni "2008-06-24 21:27:00";
$tiempoIni strtotime($tiempoIni);

$timeAhora time();

$queda $tiempoIni $timeAhora;

echo 
"Quedan ".$queda." segundos"//Aqui faltaba la ultima comilla 
Si hombre si, los segundos los da bien, pero luego el problema es al pasarle la función date() como indica el titulo del post..

al decirle:

Código PHP:
echo date("H:i:s",$queda); 
para que me saque las horas, minutos y segundos que quedan, da una hora de más...es el problema que tengo..gracias
  #7 (permalink)  
Antiguo 24/06/2008, 13:22
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: problema con funcion date()

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_daymktime($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";
}

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:47.