Foros del Web » Programando para Internet » PHP »

Ayuda con funcion de fechas por favor

Estas en el tema de Ayuda con funcion de fechas por favor en el foro de PHP en Foros del Web. Hola que tal!!! Disculpen, tengo un problema, estoy intentando crear algun PHP que me permita obtener las fechas de los lunes y viernes a partir ...
  #1 (permalink)  
Antiguo 21/05/2010, 11:10
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 1 mes
Puntos: 3
Ayuda con funcion de fechas por favor

Hola que tal!!!

Disculpen, tengo un problema, estoy intentando crear algun PHP que me permita obtener las fechas de los lunes y viernes a partir de una fecha indicada.

Es decir:

Yo indico: 17/05/2010 como fecha inicial

Y el php lo que pretendo que haga es que me imprima las fechas a 4 semanas del viernes y lunes desde la fecha indicada.

es decir:

17/05/2010 al 21/05/2010
24/05/2010 al 28/05/2010
31/05/2010 al 04/06/2010
07/06/2010 al 11/06/2010


Como vemos en mi ejemplo, se ha tomado el Lunes 17 de Mayo 2010 como fecha inicial, lo que en la primer semana me imprime el primer lunes dentro de la semana y el viernes, despues me imprime el siguiente lunes y el siguiente viernes, despues otra vez el lunes + 2 semanas y el viernes +2 semanas, finalizando con el lunes +3 semanas y el viernes +3 semanas.


Cabe aclarar que cualquier fecha que se indique entre el 17 y 21 se considera como semana 1, si yo pusiera por ejemplo:

Fecha inicial: 18 de Mayo de 2010 (18/05/2010) entonces los rangos a imprimir en 4 semanas serian asi:

24/05/2010 al 28/05/2010
31/05/2010 al 04/06/2010
07/06/2010 al 11/06/2010
14/06/2010 al 18/06/2010


Alguien sabe como podría yo hacer esto?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 21/05/2010, 11:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Ayuda con funcion de fechas por favor

Te recomiendo que mires las funciones de Date/Time y/o la clase DateTime. Aquí está toda la información sobre Date and Time. Con un poco de lectura podrás lograrlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 21/05/2010, 14:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Ayuda con funcion de fechas por favor

Cita:
Iniciado por abimaelrc Ver Mensaje
Te recomiendo que mires las funciones de Date/Time y/o la clase DateTime. Aquí está toda la información sobre Date and Time. Con un poco de lectura podrás lograrlo.
Pues la verdad es que lei de ese manual antes de venir, y no me ayuda en mucho.

Yo estaba intentando algo como esto:

Código PHP:
  $date4=date("Y-m-d"strtotime ("this week Friday"));
  
$date5=date("Y-m-d"strtotime ("this week Monday"));
  
  
$date6=date("Y-m-d"strtotime ("next week  Monday"));
  
$date7=date("Y-m-d"strtotime ("next week  Friday"));
  
  
$date8=date("Y-m-d"strtotime ("+2 week  Monday"));
  
$date9=date("Y-m-d"strtotime ("+2 week  Friday"));
  
  
  
  

  echo 
$date5.' Lunes<br> ';
  echo 
$date4.' Viernes<br> ';
  
  echo 
$date6.' Lunes<br> ';
  echo 
$date7.' Viernes<br> ';
  
  echo 
$date8.' Lunes<br> ';
  echo 
$date9.' Viernes<br> '
Pero sucede que no se imprimen correctamente las fechas ...

De cualquier forma gracias :)


Si alguien mas tuviese una sugerencia o pudiera orientarme con un ejemplo se lo agradecería mucho.
  #4 (permalink)  
Antiguo 21/05/2010, 15:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Ayuda con funcion de fechas por favor

Verifica si algo así es lo que quieres
Código PHP:
Ver original
  1. <?php
  2. $fecha = '2010-05-19';
  3. $now = strtotime($fecha);
  4. $n = 1;
  5. while($n <= 4){
  6.     $now = date('Y-m-d', $now);
  7.     echo $now . '<br />';
  8.     $now = strtotime('+1 day ' . $now);
  9.     if(date('N',$now) > 5){
  10.         $now = date('Y-m-d', $now);
  11.         $now = strtotime('+2 day ' . $now);
  12.         echo '<br />';
  13.         $n++;
  14.     }
  15. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 24/05/2010, 11:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Ayuda con funcion de fechas por favor

Cita:
Iniciado por abimaelrc Ver Mensaje
Verifica si algo así es lo que quieres
Código PHP:
Ver original
  1. <?php
  2. $fecha = '2010-05-19';
  3. $now = strtotime($fecha);
  4. $n = 1;
  5. while($n <= 4){
  6.     $now = date('Y-m-d', $now);
  7.     echo $now . '<br />';
  8.     $now = strtotime('+1 day ' . $now);
  9.     if(date('N',$now) > 5){
  10.         $now = date('Y-m-d', $now);
  11.         $now = strtotime('+2 day ' . $now);
  12.         echo '<br />';
  13.         $n++;
  14.     }
  15. }

Muy interesante tu idea abimaelrc;

He realizado un pequeño cambio donde el dia inicial si no es lunes imprime LAST MONDAY, el problema es que si el dia de la fecha cae en sábado y domingo ya no imprime correctamente las 4 fechas....

Mira, te dejo el código que he modificado:

Código PHP:
<?php

$fecha 
'22-05-2010';
$now strtotime($fecha);
$n 1;
$lunes 1;
while(
$n <= 4){
    
$now date('d-m-Y'$now);
    
$diadate('l'strtotime($now));
    
    if(
$dia != 'Monday' && $lunes == 1){echo date('d-m-Y'strtotime('last monday'strtotime($fecha))).' - día: '.date('l'strtotime('last monday'strtotime($fecha))).'<br>'$lunes++;}
    if(
$dia == 'Monday' || $dia == 'Friday'){
    echo 
$now ' - día: '.$dia.'<br />'$lunes++;}
    
$now strtotime('+1 day ' $now);
    if(
date('N',$now) > 5){
        
$now date('d-m-Y'$now);
        
$now strtotime('+2 day ' $now);
        echo 
'<br />';
        
$n++;
    }
}

?>

Me agradó tu idea de usar el while condicionado a 4.

No sé si me puedas ayudar a verificar solo el detalle de que si la fecha indicada cae en sábado o domingo pues que imprima el siguiente lunes y viernes :$...


Gracias de antemano por tu ayuda.

Última edición por dfmex; 24/05/2010 a las 12:22
  #6 (permalink)  
Antiguo 24/05/2010, 14:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Ayuda con funcion de fechas por favor

En realidad solo tienes que declararlo al principio
Código PHP:
Ver original
  1. <?php
  2. $fecha = '2010-05-19';
  3. $now = strtotime('last Monday ' . $fecha);
  4. $n = 1;
  5. while($n <= 4){
  6.     $now = date('Y-m-d', $now);
  7.     echo $now . '<br />';
  8.     $now = strtotime('+1 day ' . $now);
  9.     if(date('N',$now) > 5){
  10.         $now = date('Y-m-d', $now);
  11.         $now = strtotime('+2 day ' . $now);
  12.         echo '<br />';
  13.         $n++;
  14.     }
  15. }
Nota: son importante los espacios cuando vas a concatenar. Vigila cuando concatenes que crees los espacios.
Código PHP:
Ver original
  1. //No es lo mismo esto
  2. $candy = 'foo' . 'bar';
  3. //que esto
  4. $candy = 'foo ' . 'bar';
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 26/05/2010, 09:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Gracias por tu Ayuda

abimaelrc;

Muchas gracias por tu ayuda, con un poco de cambios y usando tu orientación he logrado que el código haga lo que yo deseo que haga, actualmente si la fecha colocada es un sabado o domingo me lanza al siguiente lunes, pero si un lunes a viernes me lanza al lunes de la semana en cuestión.

Para mi, ya es 100% funcional, pasando muchisimas pruebas que hice, dejo el código, por si algún día alguien le pudiese servir.

Gracias

Código PHP:
<?php



$fecha 
$_GET[fecha];
$now strtotime($fecha);
$day date('l'$now);

if(
$day == 'Saturday' || $day == 'Sunday'){$now strtotime('next Monday ' $fecha);}
elseif(
day != 'Monday'){$now strtotime('this week Monday ' $fecha);}
elseif(
day == 'Monday'){$now strtotime('next Monday ' $fecha);}




$n 1;
while(
$n <= 4){
    
$dia date('l'$now);
    
$now date('d-m-Y'$now);
    
    if(
$dia == 'Monday' || $dia == 'Friday'){
    echo 
$now ' día: '.$dia.'<br />';}
    
    
$now strtotime('+1 day ' $now);
    if(
date('N',$now) > 5){
        
$now date('d-m-Y'$now);
        
$now strtotime('+2 day ' $now);
        echo 
'<br />';
        
$n++;
    }
}


?>

Etiquetas: favor, fechas, funcion
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:44.