Foros del Web » Programando para Internet » PHP »

crear las fechas faltantes

Estas en el tema de crear las fechas faltantes en el foro de PHP en Foros del Web. buenas alguien sabe como generar las fechas faltantes partir de dos fechas optener fechas faltantes partir de dos fechas ejemplo 2011-01-03 y 2011-01-07 los faltantes ...
  #1 (permalink)  
Antiguo 27/06/2011, 11:31
 
Fecha de Ingreso: febrero-2011
Mensajes: 167
Antigüedad: 13 años, 2 meses
Puntos: 9
crear las fechas faltantes

buenas alguien sabe como generar las fechas faltantes partir de dos fechas

optener fechas faltantes partir de dos fechas ejemplo

2011-01-03 y 2011-01-07 los faltantes serian

2011-01-04
2011-01-05
2011-01-06
  #2 (permalink)  
Antiguo 27/06/2011, 12:21
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: crear las fechas faltantes

Hola, estas son las clases de cosas que uno podria realizar, con un poco de imaginacion
y algunas funciones nativas de php no es dificil.

pero ya te hice algo que funciona bien, y si lo quieres modificar adelante.


Código PHP:
Ver original
  1. <?php
  2.     echo fechasEntre("2011-01-25","2011-02-10");
  3.    
  4.    
  5.     //fechas en formato "2010-02-25"
  6.     function fechasEntre($fecha1, $fecha2){
  7.         $tiempo1 = explode("-",$fecha1);
  8.         $tim1 = mktime(0,0,0,$tiempo1[1], $tiempo1[2], $tiempo1[0]);
  9.        
  10.         $tiempo2 = explode("-",$fecha2);
  11.         $tim2 = mktime(0,0,0,$tiempo2[1], ($tiempo2[2] - 1), $tiempo2[0]);
  12.        
  13.         $out = "";
  14.         while($tim1 < $tim2){
  15.             $elDia = $tim1 + 86400; // + 86400 (los segundos en un dia)
  16.            
  17.             $out .= date("Y-m-d",$elDia) . "<br />";
  18.            
  19.             $tim1 = $elDia;
  20.         }
  21.        
  22.         return $out;
  23.     }
  24.    
  25.     //resultados segun este caso
  26.    
  27.     /*
  28.     2011-01-26
  29.     2011-01-27
  30.     2011-01-28
  31.     2011-01-29
  32.     2011-01-30
  33.     2011-01-31
  34.     2011-02-01
  35.     2011-02-02
  36.     2011-02-03
  37.     2011-02-04
  38.     2011-02-05
  39.     2011-02-06
  40.     2011-02-07
  41.     2011-02-08
  42.     2011-02-09
  43.    
  44.     */
  45. ?>
  #3 (permalink)  
Antiguo 27/06/2011, 13:00
 
Fecha de Ingreso: febrero-2011
Mensajes: 167
Antigüedad: 13 años, 2 meses
Puntos: 9
Respuesta: crear las fechas faltantes

muchas gracias voy probarlo
  #4 (permalink)  
Antiguo 27/06/2011, 14:58
 
Fecha de Ingreso: febrero-2011
Mensajes: 167
Antigüedad: 13 años, 2 meses
Puntos: 9
Respuesta: crear las fechas faltantes

hola amigo

<?php
como podria utilizar la funcion de fechasEntre para obtener algo asi
2011-01-03 valor es 1
2011-01-04 valor es 0
2011-01-05 valor es 1
2011-01-06 valor es 0
2011-01-07 valor es 1
osea todas las fechas pero las que si vienen de mi base de datos vienen con codigo 1
y las que faltan y no estan aparezcan tambien gracias al funcion fechasEntre pero con codigo 0 alguien sabe como ?

while($data=mysql_fetch_array($rs)){
//Funcion
echo $fecha=$data['fecha'].'Valor es'.$data['codigo'];
me imprime 2011-01-03 valor es 1
-falta 2011-01-04
me imprime 2011-01-05 valor es 1
-falta 2011-01-06
me imprime 2011-01-07 valor es 1
}

$f1='2011-01-03 ';
$f2='2011-01-07';
echo $f1;
echo "<br>";
echo fechasEntre($f1,$f2);
echo $f2;
//fechas en formato "2010-02-25"
function fechasEntre($fecha1, $fecha2){
$tiempo1 = explode("-",$fecha1);
$tim1 = mktime(0,0,0,$tiempo1[1], $tiempo1[2], $tiempo1[0]);
$tiempo2 = explode("-",$fecha2);
$tim2 = mktime(0,0,0,$tiempo2[1], ($tiempo2[2] - 1), $tiempo2[0]);
$out = "";
while($tim1 < $tim2){
$conte='0';
$elDia = $tim1 + 86400; // + 86400 (los segundos en un dia)
$out .= date("Y-m-d",$elDia).$conte."<br />";
$tim1 = $elDia;
}
return $out;
}
?>
  #5 (permalink)  
Antiguo 27/06/2011, 15:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: unir fechas de base de datos con fechas faltantes

Lo mejor sería que lo asignaras a un arreglo, luego creas la consulta y vas verificando dentro de la consulta las fechas que no existan, o desde SQL seleccionas los eventos que tengan fechas y luego en tu script PHP solo comparas y dibujas los datos.

Saludos.
  #6 (permalink)  
Antiguo 27/06/2011, 15:11
 
Fecha de Ingreso: diciembre-2008
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: crear las fechas faltantes

Solo decir que el cálculo de fechas realizado en base a la suma de 86400 segundos no funciona bien, existe un bug que provoca que 3 días cada 4 años aproximadamente tengan 25 horas (90000 segundos)
  #7 (permalink)  
Antiguo 27/06/2011, 15:33
 
Fecha de Ingreso: febrero-2011
Mensajes: 167
Antigüedad: 13 años, 2 meses
Puntos: 9
Respuesta: crear las fechas faltantes

me interesa la solucion de gatorV , con arreglos ?no? lo unico de malo es que recien se cuando viene la fecha de la base de datos jemplo puede venir 2011-01-03 y despues 2011-01-08 no puedo saber que vendra iamgino que eso lo complica mas no?
  #8 (permalink)  
Antiguo 27/06/2011, 15:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: crear las fechas faltantes

Lo que haces es guardas en un arreglo las fechas que sí tienes en la base de datos, y al dibujar tu calendario o el elemento donde tengas todas las fechas, ahí es donde buscas en el arreglo original para ver si existe o no.

Saludos.

Etiquetas: fechas
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 18:05.