Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] obtener dias

Estas en el tema de obtener dias en el foro de PHP en Foros del Web. Estimados los quiero molestar con un problema que tengo no se como hacerlo y quiero ver si me pueden orientar, lo que necesito es obtener ...
  #1 (permalink)  
Antiguo 09/02/2018, 12:08
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 11 años, 7 meses
Puntos: 0
obtener dias

Estimados los quiero molestar con un problema que tengo no se como hacerlo y quiero ver si me pueden orientar, lo que necesito es obtener los dias que existen entre dos fechas por ejemplo si el usuario pone desde: 05/02/2018 al 11/02/2018 que me dibuje una tabla 05/02/2018|06/02/2018|07/02/2018|08/02/2018|09/02/2018|10/02/2018|11/02/2018



no se si se entiende la idea alguna orientación al respecto ya que no tengo idea de como se podría hacer.
  #2 (permalink)  
Antiguo 10/02/2018, 05:24
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: obtener dias

Prueba así:

Código PHP:
Ver original
  1. $fecha1 = "2018-01-01";
  2. $fecha2 = "2018-01-15";
  3.  
  4. for($i=$fecha1;$i<=$fecha2;$i = date("Y-m-d", strtotime($i ."+ 1 days"))){
  5.     echo $i . "<br />";
  6.  
  7. }

Si lo haces de esta manera, excluyes sábados y domingos:

Código PHP:
Ver original
  1. $fecha1 = strtotime('2018-01-01');
  2. $fecha2 = strtotime('2018-01-30');
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  4.  
  5.     if((strcmp(date('w',$fecha1),'0'))!==0 && (strcmp(date('w',$fecha1),'6'))!==0){
  6.         echo date('Y-m-d l',$fecha1) . '<br />';
  7.     }
  8.  
  9. }
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 10/02/2018 a las 05:51
  #3 (permalink)  
Antiguo 12/02/2018, 04:05
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: obtener dias

Como yo lo veo lo mejor seria utilizar las clases que php nos proporciona pata trabajar con fechas, ejmplo:

Código PHP:
Ver original
  1. // Fecha de inicio
  2. $inicio = new DateTime( '2018-02-12' );
  3. // Fecha fin
  4. $fin = new DateTime( '2018-03-12' );
  5. // Añadimos un día a fin para que esta sea tenida encuenta
  6. $fin = $fin->modify( '+1 day' );
  7. // Creamos un objeto para el intervalo que queremos un día en este caso
  8. $intervalo = new DateInterval('P1D');
  9. // instancia mos un objeto DatePeriod que nos dará el rango de fechas
  10. $rangoFechas = new DatePeriod($inicio, $intervalo , $fin);
  11.  
  12.  
  13. // mostramos todas las fechas comprendidas entre inicio y fin, ambas inclusive
  14. foreach($rangoFechas as $date){
  15.     echo $date->format("Y-m-d") . "<br>";
  16. }

Puedes obtener más información aquí.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 12/02/2018 a las 04:15
  #4 (permalink)  
Antiguo 12/02/2018, 07:26
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: obtener dias

Cita:
Iniciado por xfxstudios Ver Mensaje
Prueba así:

Código PHP:
Ver original
  1. $fecha1 = "2018-01-01";
  2. $fecha2 = "2018-01-15";
  3.  
  4. for($i=$fecha1;$i<=$fecha2;$i = date("Y-m-d", strtotime($i ."+ 1 days"))){
  5.     echo $i . "<br />";
  6.  
  7. }

Si lo haces de esta manera, excluyes sábados y domingos:

Código PHP:
Ver original
  1. $fecha1 = strtotime('2018-01-01');
  2. $fecha2 = strtotime('2018-01-30');
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  4.  
  5.     if((strcmp(date('w',$fecha1),'0'))!==0 && (strcmp(date('w',$fecha1),'6'))!==0){
  6.         echo date('Y-m-d l',$fecha1) . '<br />';
  7.     }
  8.  
  9. }
Muchas Gracias Amigo funciona a la perfección era lo que necesitaba la verdad es que no tenia idea como hacerlo.

Etiquetas: dias, tabla
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 22:33.