Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/12/2010, 11:37
IEKK
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
hallar incio y fin semana con función de 6 lineas

A raíz de este post: http://www.forosdelweb.com/f18/funci...semana-864853/ , decidí buscar en este foro algo más corto, pero sólo encontré:

http://www.forosdelweb.com/f18/prime...el-ano-658585/ y http://www.forosdelweb.com/f18/funci...semana-429790/

No le tienen cariño al strtotime

AVISO: calendario europeo, si se quiere hacer empezando desde el domingo cambiar:
Código PHP:
Ver original
  1. $primer_dia_semana=(date("w", $fecha)!=1)?date('d-m-y', strtotime("last Monday",$fecha)):date('d-m-y', strtotime("last Monday",strtotime("+1 day",$fecha)));
  2.     $ultimo_dia_semana=(date("w", $fecha)!=0)?date('d-m-y', strtotime("next Sunday",$fecha)):date('d-m-y', strtotime("next Sunday",strtotime("-1 day",$fecha)));
POR:
Código PHP:
Ver original
  1. $primer_dia_semana=(date("w", $fecha)!=0)?date('d-m-y', strtotime("last Sunday",$fecha)):date('d-m-y', strtotime("last Sunday",strtotime("+1 day",$fecha)));
  2.     $ultimo_dia_semana=(date("w", $fecha)!=6)?date('d-m-y', strtotime("next Saturday",$fecha)):date('d-m-y', strtotime("next Saturday",strtotime("-1 day",$fecha)));

Código PHP:
Ver original
  1. <?php
  2. $fecha='18/11/2010';
  3. echo IniFinSemana ($fecha);
  4.  
  5. function IniFinSemana($fecha)
  6. {
  7.     $primer_dia_semana=""; $ultimo_dia_semana="";
  8.     $fecha= preg_split('/\D/',$fecha);
  9.     $fecha=mktime(0, 0, 0, $fecha[1], $fecha[0], $fecha[2]);
  10.  
  11.     $primer_dia_semana=(date("w", $fecha)!=1)?date('d-m-y', strtotime("last Monday",$fecha)):date('d-m-y', strtotime("last Monday",strtotime("+1 day",$fecha)));
  12.     $ultimo_dia_semana=(date("w", $fecha)!=0)?date('d-m-y', strtotime("next Sunday",$fecha)):date('d-m-y', strtotime("next Sunday",strtotime("-1 day",$fecha)));
  13.    
  14.     return "Primer dia de la semana".$primer_dia_semana."<br>Ultimo dia de la semana".$ultimo_dia_semana;
  15. }
  16. ?>

Por si no se entiende explico brevemente mi idea:

1º Extraemos la fecha.
2º El primer dia de una semana siempre es lunes.
3º Comprobamos si esa fecha es lunes con --> date("w", $fecha)

-Si no es lunes hallamos el anterior lunes con last monday
-Si ya es lunes last monday iría a la semana anterior, para evitarlo le sumo un día a la fecha.

4º Hallar el próximo domingo

-Si no es domingo lo hallamos con next sunday
-Si es domingo next sunday iría a la semana siguiente, para evitarlo le resto un día a la fecha.


Para el calendario empezando por domingo es lo mismo sólo cambia que es de domingo a sábado.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 01/12/2010 a las 11:45