Foros del Web » Programando para Internet » PHP »

Compara fechas

Estas en el tema de Compara fechas en el foro de PHP en Foros del Web. Buenas, Alguien sabe como puedo hacer con un if o algo parecido la comparación de fechas? Ej: Saber si del 17/03/12 pasó más de dos ...
  #1 (permalink)  
Antiguo 02/11/2012, 10:11
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Compara fechas

Buenas,

Alguien sabe como puedo hacer con un if o algo parecido la comparación de fechas? Ej: Saber si del 17/03/12 pasó más de dos meses hasta el día de hoy
  #2 (permalink)  
Antiguo 02/11/2012, 10:17
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 8 meses
Puntos: 130
Respuesta: Compara fechas

Primero, lo guardas en tu base de datos en un datetime?
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #3 (permalink)  
Antiguo 02/11/2012, 10:23
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Cita:
Iniciado por CoriaWeb Ver Mensaje
Primero, lo guardas en tu base de datos en un datetime?
Las fechas en la base de datos entran como esa 17/03/12 y las que se obtienen del día pueden obtenerse en el mismo formato. Pero también lo puedo hacer en gmdate.
  #4 (permalink)  
Antiguo 02/11/2012, 10:25
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 8 meses
Puntos: 130
Respuesta: Compara fechas

en un script propio utilizo esto (estan como datetime" en la base de datos, prueba si te sirve:

Código PHP:
Ver original
  1. <?php
  2.     $fecha= $resfecha["ultima_conexion"]; // obtenemos la fecha
  3.     $dias= 10; // los días a sumar
  4.     $resultado= date("Y-m-d", strtotime("$fecha +$dias day")); //resultado con los 10 dias sumados
  5.    
  6.     if($resultado<date("Y-m-d")){
  7.         //echo "Ha pasado 10 días sin aparecer<br>";
  8.     }
  9. ?>
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #5 (permalink)  
Antiguo 02/11/2012, 11:18
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Cita:
Iniciado por CoriaWeb Ver Mensaje
en un script propio utilizo esto (estan como datetime" en la base de datos, prueba si te sirve:

Código PHP:
Ver original
  1. <?php
  2.     $fecha= $resfecha["ultima_conexion"]; // obtenemos la fecha
  3.     $dias= 10; // los días a sumar
  4.     $resultado= date("Y-m-d", strtotime("$fecha +$dias day")); //resultado con los 10 dias sumados
  5.    
  6.     if($resultado<date("Y-m-d")){
  7.         //echo "Ha pasado 10 días sin aparecer<br>";
  8.     }
  9. ?>
Y no se puede hacer como si fuera 17/03/12 o como gmdate? O como puedo convertir uno normal en datetime?
  #6 (permalink)  
Antiguo 02/11/2012, 11:25
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 8 meses
Puntos: 130
Respuesta: Compara fechas

prueba con esto y me cuentas:

Código PHP:
Ver original
  1. $fecha1 = "12/05/2001";
  2. $fecha2 = "15/06/2002";
  3.  
  4. if ( strtotime($fecha1) < strtotime($fecha2)  ) {
  5. //aqui lo que hagas
  6. }
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #7 (permalink)  
Antiguo 02/11/2012, 11:33
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Cita:
Iniciado por CoriaWeb Ver Mensaje
prueba con esto y me cuentas:

Código PHP:
Ver original
  1. $fecha1 = "12/05/2001";
  2. $fecha2 = "15/06/2002";
  3.  
  4. if ( strtotime($fecha1) < strtotime($fecha2)  ) {
  5. //aqui lo que hagas
  6. }

Pero con si eso solo comparo si es mayor no si hay un mes de diferencia.
  #8 (permalink)  
Antiguo 02/11/2012, 11:42
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 8 meses
Puntos: 130
Respuesta: Compara fechas

Ya entendí lo que quieres, te vale el resultado por dias? Si es que si aqui tienes, solo tienes que despedazar la fecha:

Código PHP:
Ver original
  1. <?
  2. //defino fecha 1
  3. $ano1 = 2006;
  4. $mes1 = 10;
  5. $dia1 = 2;
  6.  
  7. //defino fecha 2
  8. $ano2 = 2006;
  9. $mes2 = 10;
  10. $dia2 = 27;
  11.  
  12. //calculo timestam de las dos fechas
  13. $timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
  14. $timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
  15.  
  16. //resto a una fecha la otra
  17. $segundos_diferencia = $timestamp1 - $timestamp2;
  18. //echo $segundos_diferencia;
  19.  
  20. //convierto segundos en días
  21. $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
  22.  
  23. //obtengo el valor absoulto de los días (quito el posible signo negativo)
  24. $dias_diferencia = abs($dias_diferencia);
  25.  
  26. //quito los decimales a los días de diferencia
  27. $dias_diferencia = floor($dias_diferencia);
  28.  
  29. echo $dias_diferencia;
  30. ?>

Si no simplemente tienes que sacar el resultado por meses no por dias, ya es matematicas ;)
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #9 (permalink)  
Antiguo 02/11/2012, 12:09
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Cita:
Iniciado por CoriaWeb Ver Mensaje
Ya entendí lo que quieres, te vale el resultado por dias? Si es que si aqui tienes, solo tienes que despedazar la fecha:

Código PHP:
Ver original
  1. <?
  2. //defino fecha 1
  3. $ano1 = 2006;
  4. $mes1 = 10;
  5. $dia1 = 2;
  6.  
  7. //defino fecha 2
  8. $ano2 = 2006;
  9. $mes2 = 10;
  10. $dia2 = 27;
  11.  
  12. //calculo timestam de las dos fechas
  13. $timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
  14. $timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
  15.  
  16. //resto a una fecha la otra
  17. $segundos_diferencia = $timestamp1 - $timestamp2;
  18. //echo $segundos_diferencia;
  19.  
  20. //convierto segundos en días
  21. $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
  22.  
  23. //obtengo el valor absoulto de los días (quito el posible signo negativo)
  24. $dias_diferencia = abs($dias_diferencia);
  25.  
  26. //quito los decimales a los días de diferencia
  27. $dias_diferencia = floor($dias_diferencia);
  28.  
  29. echo $dias_diferencia;
  30. ?>

Si no simplemente tienes que sacar el resultado por meses no por dias, ya es matematicas ;)
Y como puedo separar la fecha 17/03/12 en día año y mes?
  #10 (permalink)  
Antiguo 02/11/2012, 12:12
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 8 meses
Puntos: 130
Respuesta: Compara fechas

Código PHP:
Ver original
  1. $fecha11 = explode("/",$fecha1);
  2. $fecha22 = explode("/",$fecha2);
  3. $dia1=$fecha11[0];
  4. $mes1=$fecha11[1];
  5. $año1=$fecha11[2];
  6.  
  7. $dia2=$fecha22[0];
  8. $mes2=$fecha22[1];
  9. $año2=$fecha22[2];

;) ya me cuentas que tal te va
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting

Última edición por CoriaWeb; 02/11/2012 a las 12:35
  #11 (permalink)  
Antiguo 02/11/2012, 19:03
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Compara fechas

Según lo que entendí, no necesitas más que algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $ahora = time();
  4. $fbase = '17-03-2012';
  5. $ffinal = strtotime("$fbase + 2 month");
  6.  
  7. if ($ahora >= $ffinal) {
  8.     echo 'pasaron mas de 2 meses';
  9. } else {
  10.     echo 'no pasaron ' . date('d-m-Y', $ffinal);
  11. }

Pero se podría conseguir un mejor resultado si lo haces directamente en la consulta. Busca por el foro de mysql.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #12 (permalink)  
Antiguo 04/11/2012, 05:30
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Cita:
Iniciado por andresdzphp Ver Mensaje
Según lo que entendí, no necesitas más que algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $ahora = time();
  4. $fbase = '17-03-2012';
  5. $ffinal = strtotime("$fbase + 2 month");
  6.  
  7. if ($ahora >= $ffinal) {
  8.     echo 'pasaron mas de 2 meses';
  9. } else {
  10.     echo 'no pasaron ' . date('d-m-Y', $ffinal);
  11. }

Pero se podría conseguir un mejor resultado si lo haces directamente en la consulta. Busca por el foro de mysql.

Saludos.
Y esto se puedo hacer en vez de con 17-03-2012 con 17/03/2012?
  #13 (permalink)  
Antiguo 05/11/2012, 13:05
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Compara fechas

Y para hacerlo que en vez de un mes sea una hora??
  #14 (permalink)  
Antiguo 05/11/2012, 22:44
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Compara fechas

en vez de + 2 month, sería +1 hour
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:27.