Foros del Web » Programando para Internet » PHP »

Verificar vencimiento después de 2 dias

Estas en el tema de Verificar vencimiento después de 2 dias en el foro de PHP en Foros del Web. Hola: Tengo una fecha almacenada en mysql asi: 2012-08-22 04:03:42 y necesito verificar que si ya pasaron 48 horas (2 días), cambie un estatus. Cómo ...
  #1 (permalink)  
Antiguo 01/09/2012, 18:52
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Verificar vencimiento después de 2 dias

Hola:

Tengo una fecha almacenada en mysql asi: 2012-08-22 04:03:42 y necesito verificar que si ya pasaron 48 horas (2 días), cambie un estatus.

Cómo puedo hacer esto????

Es como:

If fecha > 2 dias {
hacer tal cosa
}

Gracias.
__________________
Caminando con el corazón partío
  #2 (permalink)  
Antiguo 01/09/2012, 19:45
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Verificar vencimiento después de 2 dias

Hola puedes almacenar ambas fechas en una variable, y al restar fechas esto te devuelve los segundo de diferencia
Código PHP:
Ver original
  1. $segundos_diferencia =  $fecha1 - $fecha2

Y luego solo te corresponderia convertir los segundos a días
Código PHP:
Ver original
  1. $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);

Nos informas como te fue, saludos.
__________________
Mi web --> www.CarlosPC.net
  #3 (permalink)  
Antiguo 01/09/2012, 19:47
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Verificar vencimiento después de 2 dias

Tambien podrías hacerlo así y redondear los dias a la baja para no obtener 2.1 dias.

Código PHP:
Ver original
  1. $dias_diferencia = ceil($segundos_diferencia/(3600*24));
  #4 (permalink)  
Antiguo 01/09/2012, 19:49
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Verificar vencimiento después de 2 dias

OJO, al obtener la fecha de la Base de Datos podrias obtener un string, el cual deberas convertir a dato tipo fecha con la función mktime y recien realizar la resta...
__________________
Mi web --> www.CarlosPC.net
  #5 (permalink)  
Antiguo 01/09/2012, 20:14
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

La hice asi:

Código PHP:
Ver original
  1. $fecha2 = date('Y-m-d H:i:s');
  2. $fecha_total = $fecha2 - $fecha1;
  3.  
  4. $dias_diferencia = ceil($fecha_total/(3600*24));
  5.  
  6. echo $dias_diferencia;

Las dos fechas vienen asi:

2012-08-22 04:03:42
2012-09-02 02:07:06

pero no las resta, me da 0

La probé también al reves $fecha_total = $fecha1 - $fecha2;

y también me da 0

??????
__________________
Caminando con el corazón partío

Última edición por kimmy; 01/09/2012 a las 20:16 Razón: me falto informacion
  #6 (permalink)  
Antiguo 01/09/2012, 20:19
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Verificar vencimiento después de 2 dias

Te lo dijo carlorpc, antes de restar tendras que convertir las fechas a string con la funcion mktime, algo asi:

Código PHP:
Ver original
  1. $fecha = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
  #7 (permalink)  
Antiguo 01/09/2012, 20:37
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

Muchas gracias.

lo hice asi:

Código PHP:
Ver original
  1. $fecha2 = date('Y-m-d H:i:s');
  2.  
  3. $fecha2 = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
  4.  
  5. $fecha_total = $fecha2 - $fecha1;
  6.  
  7.  
  8. $dias_diferencia = ceil($fecha_total/(3600*24));
  9.  
  10. echo $dias_diferencia;

y me dio 15586

esos son los segundos....

ahora como hago para saber si pasaron 2 dias desde la fecha 1???
__________________
Caminando con el corazón partío
  #8 (permalink)  
Antiguo 01/09/2012, 20:56
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Verificar vencimiento después de 2 dias

Dependiendo como tengas las fechas, el mktime conviertes datos en una fecha, es decir si tienes:

Código PHP:
Ver original
  1. $dia="22"; $mes="06"; $anio="2012";
  2. $hora="9"; $minutos ="25"; $segundos="25";

con el mktime puedes convertir todos esos datos en una fecha y almacenarla en una variable para operarla luego

Si tienes tu fecha ya echa, pero sigue como string:

Código PHP:
Ver original
  1. $fecha1="2012-08-22 04:03:42";

la debes de convertir a fecha con la función strtotime:

Código PHP:
Ver original
  1. $fecha1 = strtotime($stringoriginal);

Si tienes dudas respecto a las funciones puedes consultar la documentación oficial:

mktime: http://goo.gl/hceNX
strtotime: http://goo.gl/IfpGK
__________________
Mi web --> www.CarlosPC.net

Última edición por carlospc; 01/09/2012 a las 20:57 Razón: error en redacción
  #9 (permalink)  
Antiguo 01/09/2012, 21:31
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

hola kimmy, recuerda que si le quitas el espacio, los guiones, y el doble punto a tu fecha, queda un numero entero
cual puedes comprobar con otro de la misma forma...

Y-m-d H:i:s
seria
YmdHis

Con números

20120902002430 (mi hora actual)
menos ayer a la misma hora :
20120901002430

te dará 1000000, que equivale a 1 día, si son 2000000 equivalen a 2 días.
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #10 (permalink)  
Antiguo 01/09/2012, 21:41
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

Hola KsrZ. Gracias por la explicación, pero estoy enredada....

Estuve viendo este post que mas o menos refleja algo de lo que quiero hacer:

http://www.forosdelweb.com/f18/consu...n-date-930886/

y coloqué en mi código esto:

Código PHP:
Ver original
  1. $fecha3 = $fecha1 +(2 * 3600);
  2.  
  3. echo date("Y-m-d H:i:s", strtotime($fecha3));

pero me da esto 1970-01-01 00:00:00

lo que necesito es saber si la fecha1 es mayor a 48 horas....
__________________
Caminando con el corazón partío
  #11 (permalink)  
Antiguo 01/09/2012, 21:47
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

mas explicito en php:
Código PHP:
Ver original
  1. #quitamos guiones espacios y doble punto con esta funcion
  2. function LimpiaFecha($fecha){
  3.    return str_replace(array('-',':',' '),'', $fecha);
  4. }
  5.  
  6. # Si Fecha vieja -(menos) fecha actual, es mayor a 2 dias (2000000)
  7. if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fechaVieja) > 2000000){
  8.     # hacemos algo, tenemos mas de 2 dias de diferencia.
  9. }

Edito: le había errado en la posición de las fechas en el IF
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #12 (permalink)  
Antiguo 01/09/2012, 21:51
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

Gracias. Cómo hago para probar que me está restando adecuadamente las fechas???
__________________
Caminando con el corazón partío
  #13 (permalink)  
Antiguo 01/09/2012, 21:54
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

calculadora, o bien

echo LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fechaVieja);

y ve que te sale
PD: Arriba edite, estaba mal mi código.. era así:

Código PHP:
Ver original
  1. #quitamos guiones espacios y doble punto con esta funcion
  2. function LimpiaFecha($fecha){
  3. * *return str_replace(array('-',':',' '),'', $fecha);
  4. }
  5. *
  6. # Si  fecha actual -(menos) Fecha vieja, es mayor a 2 dias (2000000)
  7. if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fechaVieja) > 2000000){
  8. * * # hacemos algo, tenemos mas de 2 dias de diferencia.
  9. }
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #14 (permalink)  
Antiguo 01/09/2012, 22:06
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

Al colocar asi:

Código PHP:
Ver original
  1. if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fecha1) > 2000000){
  2.  echo LimpiaFecha($fecha1);
  3. }

me dio esto: 20120822040342

y al colocar asi:

Código PHP:
Ver original
  1. if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fecha1) > 2000000){
  2.  echo LimpiaFecha(date('Y-m-d H:i:s'));
  3. }

me dio esto: 20120902035654

Que son las dos fechas dadas.

y asi:

Código PHP:
Ver original
  1. if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fecha1) > 2000000){
  2.  echo (LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fecha1));
  3. }

me dio esto: 79995402

lo que significa que es mayor que 2000000. Por lo tanto mayor a 2 dias...

Es correcto????
__________________
Caminando con el corazón partío
  #15 (permalink)  
Antiguo 01/09/2012, 22:07
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

Te lo simplifico un poco mas si gustas, con esta función:

Código PHP:
Ver original
  1. function diffFechas($fechaVieja,$Dias){
  2.    # @parm $fechaVieja : fecha antigua con formato "Y-m-d H:i:s"
  3.   # @parm $Dias : Diferencia de días que deberán tener ambas fechas
  4.   # @return : si hay mas de $Dias de diferencia True, sino false
  5.  
  6.    # Si  fecha actual -(menos) Fecha vieja, es mayor a 2 dias (2000000)
  7.   if(LimpiaFecha(date('Y-m-d H:i:s')) - LimpiaFecha($fechaVieja) > $dias*1000000){
  8.       return true;
  9.    } else {
  10.       return false;
  11.    }
  12. }
  13.  
  14.  
  15.   # aquí usamos la función
  16. if(diffFechas($TuFechaViejaAqui, 2)){
  17.      # hacemos algo, tenemos mas de 2 dias de diferencia.
  18. }
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #16 (permalink)  
Antiguo 01/09/2012, 22:09
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

Cita:
me dio esto: 79995402

lo que significa que es mayor que 2000000. Por lo tanto mayor a 2 dias...

Es correcto????
si es correcto, tienes 79 días, casi 80 de diferencia.
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #17 (permalink)  
Antiguo 01/09/2012, 22:17
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar vencimiento después de 2 dias

Está buenisima. Gracias por todo. Y lo más importante es que entendí el cómo y el porque.

__________________
Caminando con el corazón partío
  #18 (permalink)  
Antiguo 01/09/2012, 22:26
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años
Puntos: 26
Respuesta: Verificar vencimiento después de 2 dias

de nada ^^, me alegra que se aya entendido,
recuerda que solo puedes comprobarlo si la fecha es
año-mes-día hora:minuto:segundo
el orden es muy importante, caso contrario, no te dará los resultados que esperas
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Etiquetas: dias, mysql, verificar
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 08:33.