Foros del Web » Programando para Internet » PHP »

comparar rangos de fechas

Estas en el tema de comparar rangos de fechas en el foro de PHP en Foros del Web. Hola, he estado leyendo en otros spots de este foro y por otras web a ver si encontraba la solucion pero nada. Necesito comparar un ...
  #1 (permalink)  
Antiguo 03/08/2006, 07:41
 
Fecha de Ingreso: julio-2006
Ubicación: Malaga
Mensajes: 29
Antigüedad: 17 años, 8 meses
Puntos: 0
comparar rangos de fechas

Hola,

he estado leyendo en otros spots de este foro y por otras web a ver si encontraba la solucion pero nada. Necesito comparar un rango de fechas ya que tengo que mostrar desde mi base de datos los registros que cumplan con esa restricción. La cosa es que desde MySQL no puedo hacerlo ya que no puedo por algunos motivos de mi aplicacion. querria hacer algo como

if (fecha_inicio<=fecha_actual && fecha_fin>=fecha_actual) {
//mostrar por pantalla datos varios que cumplan condición.
}

yo tengo dos campos formato DATE (start y end) en mi BD lo que habia pensado era pasarlos a segundos y comparar con los segundos actuales. Aca es donde surge mi duda ya que yo hago lo siguiente y no me funciona:

Código PHP:
//obviar el metodo id_campo ya que lo unico que me devuelve es el numero de campo

$seg_actuales=strtotime(date("d-m-y"));
$ini=$this->id_campo("DATE_FORMAT(start,'%d-%m-%y')");
$fin=$this->id_campo("DATE_FORMAT(end,'%d-%m-%y')");

$row mysql_fetch_row($this->Consulta_ID);
$seg_ini=strtotime($row[$ini]);
$seg_fin=strtotime($row[$fin]);
echo 
"ini=".$seg_ini." actual=".$seg_actuales;

if (((
$seg_actuales-$seg_ini)>=0) AND (($seg_actuales-$seg_fin)<=0)) {
    
//mostrar datos

Lo que tengo entendido es que los timestamp son los segundos transcurridos desde Unix, pues bien, ese valor me da mayor para fechas anteriores a la actual (no se si estoy confundiendome con respecto a lo que me devuelve strtotime)
Gracias
__________________
patricio218

Última edición por patricio218; 03/08/2006 a las 08:07
  #2 (permalink)  
Antiguo 03/08/2006, 14:45
 
Fecha de Ingreso: julio-2006
Ubicación: Malaga
Mensajes: 29
Antigüedad: 17 años, 8 meses
Puntos: 0
ya lo solucione de otra forma, aca dejo la solucion para quien le pase lo mismo, en este caso solo sirve para fechas con formato "d-m-y":
Código PHP:

/* Dar buelta la fecha d-m-y  =>  y-m-d */

function rev_fecha($cad) {

$tmp=$cad;
$j=strlen($cad)-2;
for(
$i=0;$i<=1;$i++) {
    
$tmp[$i]=$cad[$j];
    
$tmp[$j]=$cad[$i];
    
$j++;
}
return 
$tmp;

}

function 
rango_fechas() {

$fecha_actual=date("y-m-d");

//$ini y $fin van a ser los indices de los campos donde estan mis fechas pueden ponerlos directamente.
$ini=$this->id_campo("DATE_FORMAT(start,'%d-%m-%y')");
$fin=$this->id_campo("DATE_FORMAT(end,'%d-%m-%y')");

//doy la vuelta a la fecha
$start=$this->rev_fecha("$row[$ini]");
$end=$this->rev_fecha($row[$fin]);

//Uso funcion strcmp: ver funcionamiendo en  php.net 
if ((strcmp($start,$fecha_actual)<=0) AND (strcmp($end,$fecha_actual)>=0)) {
 
//mostrar campos
}

Lo he puesto algo resumido para que se entienda mejor ya que mi aplicacion es mas liosa de explicar y ese no es el fin de este spot. Un saludo y gracias a los que se interesaron por este asunto.
__________________
patricio218
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 19:05.