PHP - fecha

 
Vista:
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por zendi (1056 intervenciones) el 19/02/2014 17:17:23
Tengo este codigo para restar fechas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
echo $date2 = date('d-m-Y');//la fecha del computador
echo "</br>";
 
////////////////////2013-03-01 - 19-02-2014
echo $diff = abs(strtotime($date2) - strtotime('2013-03-01'));
echo "</br> Años";
echo $years = floor($diff / (365*60*60*24));
echo "</br> Meses";
echo $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
echo "</br> Dias";
echo $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
    echo "</br>";
 
if ($months > 8){
    printf("%d years, %d months, %d days\n", $years, $months, $days);
}
else{
    echo "Es Menor a 8";
}
?>
en este caso el resultado es:
0 years, 11 months, 25 days


pero el problema es que cuando le resto con esta fecha 16-11-2012 arroja
1 years, 3 months, 5 days. Cuando debiera ser mayor a 8 meses tambien ya que 16-11-2012 es una fecha mas lejana al 2014.
si alguien pudiera ayudarme con este codigo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por xve (6935 intervenciones) el 19/02/2014 19:12:33
Hola Zendi, tienes que definir tu fecha en formato ingles, sino no te funcionara correctamente el strtottime()

Prueba así:
1
echo $date2 = date('Y-m-d');//la fecha del computador

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por zendi (1056 intervenciones) el 19/02/2014 19:43:48
Hola Xve. Te comento segui tu consejo pero sigue igual el problema. Pero yo por aqui vere como resuelvo. No me abandones en esta cruzada por favor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por xve (6935 intervenciones) el 20/02/2014 07:51:55
Hola Zendi, creo que tu problema, esta en el condicional, ya que puede ser que la diferencia sea de 1 año y 1 mes, por lo que tienes que comparar 12 meses + 1 mes... algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
echo $date2 = date('Y-m-d');//la fecha del computador
echo "</br>";
 
////////////////////2013-03-01 - 19-02-2014
echo $diff = abs(strtotime($date2) - strtotime('2012-11-16'));
echo "</br> Años ";
echo $years = floor($diff / (365*60*60*24));
echo "</br> Meses ";
echo $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
echo "</br> Dias ";
echo $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
echo "</br>";
 
if ($months+($years*12) > 8)
{
    printf("%d years, %d months, %d days\n", $years, $months, $days);
}else{
    echo "Es Menor a 8";
}
?>

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por zendi (1056 intervenciones) el 20/02/2014 19:20:57
Hola Xve, que tal amigo? ahora si trae todos los registros. Ahora mi pregunta es : porque sumamos los meses+años*12?

para el caso de estas fechas
1
echo $diff = abs(strtotime($date2) - strtotime('2012-11-12'));

me da este resultado:15.28 y naturalmente es mayor que 8.
tendra que ver con los 12 meses?
pero explicame para saber por favor.
saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por xve (6935 intervenciones) el 20/02/2014 20:25:37
Hola Zendi, intento explicarte...

Al buscar la diferencia entre dos fechas, te puede salir como resultado: 1 año y 2 meses
Naturalmente dos meses es inferior a 8 meses, pero tienes que sumar también los doce meses del año. La diferencia real en meses son 14 no 2.

No se si me he sabido explicar... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por zendi (1056 intervenciones) el 20/02/2014 21:09:16
Xve pero ¿los doce meses ya no estan incluidos en los 365 dias aplicados en la formula? Es mi parecer al respecto, es lo que no logro captar y disculpa mi desconocimiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por xve (6935 intervenciones) el 21/02/2014 10:20:35
Hola Zendi, no entiendo que quieres decir...

El tema esta en que tu quieres saber si hace mas de 8 meses, verdad? Entonces, tienes que trabajar únicamente con meses, no utilices años.... por eso realizo la operación, para pasar los años a meses.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fecha

Publicado por zendi (1056 intervenciones) el 21/02/2014 13:18:33
Hola Xve. Bueno ahora si capte la idea, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar