Foros del Web » Programando para Internet » PHP »

Saber fechas exactas entre un determinado periodo

Estas en el tema de Saber fechas exactas entre un determinado periodo en el foro de PHP en Foros del Web. Hola buenas tardes. Estoy haciendo una aplicacion y necesito vuestra ayuda puesto que me he craneado durante muchas horas este tema sin encontrar solución. Necesito ...
  #1 (permalink)  
Antiguo 04/07/2013, 10:54
 
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 15 años, 3 meses
Puntos: 2
Saber fechas exactas entre un determinado periodo

Hola buenas tardes.

Estoy haciendo una aplicacion y necesito vuestra ayuda puesto que me he craneado durante muchas horas este tema sin encontrar solución.
Necesito saber si existe alguna forma de saber exactamente cuales son las fechas entre dos determinadas fechas, me explico.

Si en el formulario me ingresan la fecha de inicio y termino (ej. 10/07/2013 y 31/07/2013 respectivamente), necesito saber las fechas exactas entre estos 2 intervalos de fechas, es decir, que mediante un ciclo se me listen:

Código HTML:
10/07/2013
11/07/2013
12/07/2013
-
-
-
-
29/07/2013
30/07/2013
31/07/2013
En el caso que la fecha de inicio y termino sea del mismo mes es simple, pero tengo inconvenientes cuando ambas fechas pertenecen a meses distintos (incluso años distintos).

Eso, agradezco de antemano cualquier ayuda.

Saludos
  #2 (permalink)  
Antiguo 04/07/2013, 11:10
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Respuesta: Saber fechas exactas entre un determinado periodo

Holas, Rro237.

En tu ciclo, usa la función mktime() de php, de modo que vayas construyendo cada fecha, sumándole a la anterior un día completo. Así te desligas de tener que estar calculando cambios de meses y años, etc.... Y con date() le vas dando la apariencia que quieres a cada fecha generada.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 04/07/2013, 11:17
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 11 años, 4 meses
Puntos: 32
Respuesta: Saber fechas exactas entre un determinado periodo

pues se puede usar el strtotime
Código PHP:
Ver original
  1. < ?php
  2. $fechaInicio=strtotime("25-02-2008");
  3. $fechaFin=strtotime("01-04-2008");
  4.  
  5. for($i=$fechaInicio; $i<=$fechaFin; $i+=86400){
  6.     echo date("d-m-Y", $i)."<br>";
  7. }
  8. ?>

pero trabaja con "-" tendrias q remplazarlos
  #4 (permalink)  
Antiguo 04/07/2013, 12:04
Avatar de exatienda  
Fecha de Ingreso: julio-2013
Ubicación: Manresa, Barcelona
Mensajes: 227
Antigüedad: 11 años, 4 meses
Puntos: 21
Respuesta: Saber fechas exactas entre un determinado periodo

Tal y como comenta el compañero quinqui, lo que debes hacer es usar la función mktime(), esta función lo que hace es convertir una fecha en formato numérico Unix que luego podrás usar para operar con fechas.

Cada dia del calendario desde el inicio de no recuerdo cuanto, tiene un número internto de fecha. Para operar con fechas deberás utilizar este valor numérico.
__________________
cajas rack tpvs | impresoras
  #5 (permalink)  
Antiguo 04/07/2013, 12:33
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Saber fechas exactas entre un determinado periodo

Con versiones recientes de PHP es mucho mas relajado

Código PHP:
<?php
// Para PHP >= 5.3.0

$ini = new DateTime('2013-07-10'); // formato: aaaa-mm-dd
$fin = new DateTime('2013-07-31');

$intervalo $ini->diff($fin);
$dias_diff $intervalo->format('%a');

echo 
'Hay de diferencia '.$dias_diff.'dias <p/>';


for (
$i=0;$i<$dias_diff;$i++){
   
$ini->add(new DateInterval('P1D'));
   echo 
$ini->format('Y-m-d') . '<br/>';
}
__________________
Salu2!
  #6 (permalink)  
Antiguo 04/07/2013, 12:55
 
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Saber fechas exactas entre un determinado periodo

Excelente, me resultó. Agradecido de vuestros aportes.

Saludos
  #7 (permalink)  
Antiguo 04/07/2013, 13:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Saber fechas exactas entre un determinado periodo

Quiero aclarar que hice algo no-muy-bien por no darme mas duro y es que no deberia crear el objeto DateInterval cada vez dentro del FOR sino:

Código PHP:
// arriba como antes
$mas_1D = new DateInterval('P1D');

for (
$i=0;$i<$dias_diff;$i++){   
   echo 
$ini->add($mas_1D)->format('Y-m-d') . '<br/>';
}

__________________
Salu2!

Última edición por Italico76; 04/07/2013 a las 13:16
  #8 (permalink)  
Antiguo 04/07/2013, 14:03
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Saber fechas exactas entre un determinado periodo

Puede usar DatePeriod que es iterable y con eso recorres las fechas que se encuentran dentro de un periodo dado. Quedaria algo como lo siguiente.

Código PHP:
Ver original
  1. $begin = new DateTime( '2013-07-10' );
  2. $end = new DateTime( '2013-07-31' );
  3.  
  4. $interval = new DateInterval('P1D');
  5. $daterange = new DatePeriod($begin, $interval ,$end);
  6.  
  7. foreach($daterange as $date){
  8.     echo $date->format("Y-m-d") . "<br>";
  9. }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 04/07/2013, 18:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Saber fechas exactas entre un determinado periodo

Excelente @hhs ... la diferencia es que es un intervalo [begin,end) o sea no incluye el ultimo dia
__________________
Salu2!
  #10 (permalink)  
Antiguo 11/07/2013, 13:03
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Saber fechas exactas entre un determinado periodo

Cita:
Iniciado por Italico76 Ver Mensaje
Excelente @hhs ... la diferencia es que es un intervalo [begin,end) o sea no incluye el ultimo dia
Gracias y si, es un intervalo semiabierto. Puede solucionar de forma muy sencilla para que incluya la ultima fecha dentro del rango.

Código PHP:
Ver original
  1. $begin = new DateTime( '2013-07-10' );
  2. $end = new DateTime( '2013-07-31' );
  3.  
  4. $end->modify('+1 day');
  5.  
  6. $interval = new DateInterval('P1D');
  7. $daterange = new DatePeriod($begin, $interval ,$end);
  8.  
  9. foreach($daterange as $date){
  10.     echo $date->format("Y-m-d") . "<br>";
  11. }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: determinado, formulario
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 06:54.