Foros del Web » Programando para Internet » PHP »

Validación de fechas

Estas en el tema de Validación de fechas en el foro de PHP en Foros del Web. Hola a todos! Soy yo otra vez con otra duda. Esta vez en PHP. Cómo hago para comparar la fecha actual con una fecha registrada ...
  #1 (permalink)  
Antiguo 15/07/2007, 19:27
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Validación de fechas

Hola a todos!

Soy yo otra vez con otra duda. Esta vez en PHP.

Cómo hago para comparar la fecha actual con una fecha registrada en la base de datos? Por ejemplo, si registro la fecha 01/08/2007, cómo hago para decir que 15/07/2007 es menor que 01/08/2007? Cómo hago para decir que 30/08/2007 son 30 días después del 01/08/2007?

Suena confuso, pos así está mi cabeza... flotando en el limbo.



Otro royo... aún peor... en MySQL se registra como timestamp... ni siquiera he probado con almacenar una fecha en formato dd/mm/aaaa... Se me va a complicar la cosa u.u

Creo que mejor lo hago a la manera sencilla... cada fecha en cada campo. Engorroso pero ni modo. No tengo experiencia en esto :(

Última edición por ghosthead-nebula; 15/07/2007 a las 20:02
  #2 (permalink)  
Antiguo 15/07/2007, 20:15
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Re: Validación de fechas

hola
dentro de una consulta mysql puedes comparar fechas normalmente con los signos <, > e =

por ejemplo
Código:
SELECT * FROM tablon WHERE fecha>'2007-02-04'
simplemente recuerda que en mysql el formato de las fechas es Y-m-d

exitos ^^

--edit--
bueno otra cosa: para obtener una fecha X dias posterior o anterior a una fecha qe tengas, puedes utilizar strtotime():

Código PHP:
$fecha date("Y-m-d",strtotime("+30 days",strtotime("2007-08-01"))); 

Última edición por geq; 15/07/2007 a las 20:21
  #3 (permalink)  
Antiguo 15/07/2007, 21:53
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Busqueda Re: Validación de fechas

Gracias.

Lo que quería era que en PHP me comparada la fecha actual con una registrada en la base de datos. Busqué en internet y conseguí algo que me aclaró muchas dudas, pero surge lo siguiente:

Código PHP:
// Fecha actual 
    
list($hora$min$seg$dia$mes$ano)=explode(" "date("H i s j m Y"));

// Fecha en la base de datos
    
$anobd = (int) substr($date,0,4);
    
$mesbd = (int) substr($date,5,2);
    
$diabd = (int) substr($date,8,2);
                    
//Comparación de fechas
    
if($ano == $anobd// Mismo año
        
if($mes == $mesbd// Mismo mes
            
if($dia >= diabd// Mismo día o posterior
                
$valido 1;
            else
                
$valido 0;
        else
            if(
$mes $mesbd//Mes anterior
                
$valido 0;
            else
                
$valido 1// Mes posterior
    
else
        
$valido 0// Año diferente
/*    Esto con el fin de garantizar el acceso de los usuarios niveles 1 y 2 a
partir de la fecha de apertura del proceso, pero permitiendo el acceso al
culminar el mismo, con el fin de realizar consultas */ 
El problema surge en el hecho de que las variables $diabd, $mesbd y $anobd (lo de la base de datos) obtiene como valores el 0 (cero). Y si no le pongo el (int) me lo toma como un string.

Hay alguna forma de solucionar esto?
  #4 (permalink)  
Antiguo 16/07/2007, 07:12
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Validación de fechas

Hola? *eco*
  #5 (permalink)  
Antiguo 16/07/2007, 09:45
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Validación de fechas

Será que nadie ayuda?




Por cierto, alguien me dijo que ando desesperada y me puso un negativo en este post... A ver... Desde ayer les escribo y al parecer nadie responde y necesito resolver esto con urgencia. Entonces? Cómo quiéren que me ponga?

Última edición por ghosthead-nebula; 16/07/2007 a las 11:59
  #6 (permalink)  
Antiguo 16/07/2007, 14:39
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 6 meses
Puntos: 60
Re: Validación de fechas

Cita:
Iniciado por ghosthead-nebula Ver Mensaje
El problema surge en el hecho de que las variables $diabd, $mesbd y $anobd (lo de la base de datos) obtiene como valores el 0 (cero). Y si no le pongo el (int) me lo toma como un string.[/I]
Como que obtiene valores el 0?,
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #7 (permalink)  
Antiguo 16/07/2007, 14:53
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Validación de fechas

Pos sí. Supuestamente si quitaba el (int) depería obtener un string pero tampoco lo hace.

Pero ya el problema está resuelto. Como sólo necesito comparar fechas geq me recomendó usar strotime()

Gracias de todos modos
  #8 (permalink)  
Antiguo 16/07/2007, 15:00
 
Fecha de Ingreso: junio-2007
Ubicación: por ahi
Mensajes: 262
Antigüedad: 17 años, 4 meses
Puntos: 4
Re: Validación de fechas

el problema para mi esta en el paso 1:

list($hora, $min, $seg, $dia, $mes, $ano)=explode(" ", date("H i s j m Y"));

en la parte date, el formato para poderlo conparar con lo que quieres esta mal.

Quita el machete del Casting a int y mira el formato de en la ayuda de php, es muy buena. Por eso es que es popular PHP.


http://es.php.net/date

Escribir la frase

" Hola? *eco* "

Es bastante agresivo, cambia la actitud y obtendras mejores cosas.
  #9 (permalink)  
Antiguo 16/07/2007, 15:30
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Validación de fechas

Cita:
cambia la actitud y obtendras mejores cosas

No es eso. Es que dejé muchos mensajes solicitando distintos tipos de ayuda y nadie me prestaba atención y me enojé. En fin si ofendí a alguien, lo siento
  #10 (permalink)  
Antiguo 16/07/2007, 15:42
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 19 años, 2 meses
Puntos: 14
Re: Validación de fechas

bueno no se si ya t respondieron, pero si lo q quieres es comprar fechas yo t tengo un trukito, tambien pase x esa situación y toko ingeniármelas

usa asi

Código PHP:

  $fecha_p 
getdate();
  
$dia $fecha_p["mday"];
  
$mes $fecha_p["mon"];
  
$year $fecha_p["year"];
  
$longitud_dia strlen($dia);
  if(
$longitud_dia == 1){
    
$dia "0$dia";
  }
  
$longitud_mes strlen($mes);
  if(
$longitud_mes == 1){
    
$mes "0$mes";
  }
  
$fecha "".$year."".$mes."".$dia.""
ok esto te generara un x ejemplo 20070809 .. siempre el numero q venga sera mayor x ejemplo 20070810 ... asi puedes hacer comparaciones d cual es mayor o menor.. tambien puedes aplicarle horas t permitira ser mas especifico

No t complicas tanto y puedes usar un campo varchar para meter esa info.. ademas puedes hacer comparaciones d mes o año simplemente haciendo cortes d la variable, entoncs usarias la fecha normal 20/04/2007 y esta fecha 20070423 guardarias ambas en campos diferentes, trabajarías los cálculos con la segunda y mostrarías la primera

espero t sea de ayuda :)

Última edición por minkweb; 16/07/2007 a las 15:49
  #11 (permalink)  
Antiguo 16/07/2007, 16:04
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Validación de fechas

Tendría que probarla, pero ya conseguí la solución con strotime.

De todos modos gracias
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 14:09.