Foros del Web » Programando para Internet » PHP »

Problema para obtener dias

Estas en el tema de Problema para obtener dias en el foro de PHP en Foros del Web. Buenas, hace poco me pasaron una funcion para obtener los dias... pero no se k le pasa q no me hace la resta bien. Es ...
  #1 (permalink)  
Antiguo 12/06/2005, 14:07
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 20 años, 4 meses
Puntos: 0
Problema para obtener dias

Buenas, hace poco me pasaron una funcion para obtener los dias... pero no se k le pasa q no me hace la resta bien.

Es esto:

//Tengo la fecha en el formato yyyy-mm-dd y la paso a dd-mm-yyyy
$ano=substr($_SESSION['f_r'], 0, 4);
$mes=substr($_SESSION['f_r'], 5, 2);
$dia=substr($_SESSION['f_r'], 8, 2);
$fecha_recogida = ($dia."/".$mes."/".$ano);

$ano1=substr($_SESSION['f_d'], 0, 4);
$mes1=substr($_SESSION['f_d'], 5, 2);
$dia1=substr($_SESSION['f_d'], 8, 2);
$fecha_devolver = ($dia1."/".$mes1."/".$ano1);

/con esto hago la resta de las 2 fechas
if(strtotime($fecha_devolver) > strtotime(fecha_recogida))
{
print "ee";
}
$diff = strtotime($fecha_devolver)-strtotime(fecha_recogida);
$seconds = 0;
$hours = 0;
$minutes = 0;

if($diff % 86400 > 0)
{
$rest = ($diff % 86400);
$days = ($diff - $rest) / 86400;
if( $rest % 3600 > 0 )
{
$rest1 = ($rest % 3600);
$hours = ($rest - $rest1) / 3600;
if( $rest1 % 60 > 0 )
{
$rest2 = ($rest1 % 60);
$minutes = ($rest1 - $rest2) / 60;
$seconds = $rest2;
}else
$minutes = $rest1 / 60;
}else
$hours = $rest / 3600;
}else
$days = $diff / 86400;
echo $days;
  #2 (permalink)  
Antiguo 12/06/2005, 14:18
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Sin leer todo el código diría que el problema es que en vez de "strtotime(fecha_recogida)" tendrías que poner "strtotime($fecha_recogida)"
  #3 (permalink)  
Antiguo 12/06/2005, 14:24
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 20 años, 4 meses
Puntos: 0
perdon esta puesto, lo tengo puesto en el codigo pero no lo he puesto aki, ups:

//Tengo la fecha en el formato yyyy-mm-dd y la paso a dd-mm-yyyy
$ano=substr($_SESSION['f_r'], 0, 4);
$mes=substr($_SESSION['f_r'], 5, 2);
$dia=substr($_SESSION['f_r'], 8, 2);
$fecha_recogida = ($dia."/".$mes."/".$ano);

$ano1=substr($_SESSION['f_d'], 0, 4);
$mes1=substr($_SESSION['f_d'], 5, 2);
$dia1=substr($_SESSION['f_d'], 8, 2);
$fecha_devolver = ($dia1."/".$mes1."/".$ano1);

/con esto hago la resta de las 2 fechas
if(strtotime($fecha_devolver) > strtotime($fecha_recogida))
{
print "ee";
}
$diff = strtotime($fecha_devolver)-strtotime($fecha_recogida);
$seconds = 0;
$hours = 0;
$minutes = 0;

if($diff % 86400 > 0)
{
$rest = ($diff % 86400);
$days = ($diff - $rest) / 86400;
if( $rest % 3600 > 0 )
{
$rest1 = ($rest % 3600);
$hours = ($rest - $rest1) / 3600;
if( $rest1 % 60 > 0 )
{
$rest2 = ($rest1 % 60);
$minutes = ($rest1 - $rest2) / 60;
$seconds = $rest2;
}else
$minutes = $rest1 / 60;
}else
$hours = $rest / 3600;
}else
$days = $diff / 86400;
echo $days;
  #4 (permalink)  
Antiguo 12/06/2005, 14:50
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
el problema es que el strtotime pide el formato en inglés

http://ar2.php.net/manual/es/function.strtotime.php
strtotime -- Procesar cualquier descripción textual de fecha/hora en Inglés convirtiéndola en una timestamp de UNIX.

Para arreglarlo
$fecha_recogida = ($mes."/".$dia."/".$ano);
$fecha_devolver = ($mes1."/".$dia1."/".$ano1);
  #5 (permalink)  
Antiguo 12/06/2005, 20:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Quieres obtener el número de días entre dos fechas???; http://www.forosdelweb.com/f18/sabe-n-dias-entre-fecha-otra-275731/

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 16:20.