Foros del Web » Programando para Internet » PHP »

Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

Estas en el tema de Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año) en el foro de PHP en Foros del Web. Feliz Año a todos los foreros. Amigos como siempre programando sin importar la fecha. Les vengo a pedir una ayudita. Actualmente necesito conocer el primer ...
  #1 (permalink)  
Antiguo 02/01/2009, 13:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 1
Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

Feliz Año a todos los foreros. Amigos como siempre programando sin importar la fecha. Les vengo a pedir una ayudita. Actualmente necesito conocer el primer y ultimo día de una semana, contando las semanas a partir del primer lunes del año. Para conocer las semanas estoy utilizando

Código:
Código PHP:
echo strftime ("%W"); 
Por que la función
Código PHP:
  echo date("W"); 
en este año por ejemplo me coloca los dias 1, 2, 3 como primera semana, y necesito que sean a partir del lunes.Necesito que dado una semana cualquiera del Año pueda obtener la fecha de inicio y de fin. He revisado innumerables foros y no encuentro un ejemplo que me ayude a realizar la funcion ke necesito, Please a ver kien me puede auxilar, y gracias como siempre
  #2 (permalink)  
Antiguo 02/01/2009, 17:21
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

W (mayúscula) te devuelve el número de semana y w (minúscula) te devuelve el número de día dentro de la semana (0=domingo, 6=sabado)

Código PHP:
// Obtener semana y numero de dia en base a la fecha dada
list($anio$mes$dia$semana$sdia) = explode(':'date('Y:m:d:W:w'$fecha));
// Creamos la nueva fecha
$inicio strtotime("$anio-$mes-$dia 12:00am");
// Obtenemos el timestamp del lunes para esa semana
$inicio += ($sdia) * 86400;
// Agregamos 6 dias y obtenemos el timestamp del fin de semana
$fin $inicio + (86400); 
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/01/2009, 20:15
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

hola Triby, Gracias por la respuesta.

En este caso lo ke deseo hacer ke el usuario introduzca lel número de una semana del año en curso, por ejemplo la 52 y de alli se me genere el primer y ultimo dia de esta semana. de la forma en que me dices el usuario tendria ke colocar la fecha. Gracias nuevamente.
  #4 (permalink)  
Antiguo 02/01/2009, 21:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

Debe haber una funcion para obtener la fecha a partir de una semana, no recuerdo cual es, pero se me ocurre:
Código PHP:
// Primera semana del año:
$anio date('Y'time();
$inicio strtotime("$anio-01-01 12:00am");
// Obtenemos el timestamp del lunes para la primera semana
$inicio += ($sdia) * 86400;
// Agregamos el total de semanas dadas por el usuario:
$inicio += ($semana 1) * 86400;
// Agregamos 6 dias y obtenemos el timestamp del fin de semana
$fin $inicio + (86400); 
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 05/01/2009, 10:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

Hola danikene,

yo tengo una función que le pasas por parámetro el número de la semana y el año que deseas consultar, y te devuelve un arreglo con las fechas a partir del lunes hasta el domingo de la semana en cuestión:

Código PHP:

function getDiasEnSemana ($numeroSemana$anio
{
      
// Cuento a partir del '0104' porque Enero 4 está siempre en la semana 1
      // (de acuerdo a ISO 8601).
      
$tiempoSemana strtotime($anio '0104 +' . ($numeroSemana 1) . ' weeks');
  
      
// Obtengo el timestamp del primer día de la semana (lunes)
      
$lunesSemana strtotime('-' . (date('w'$tiempoSemana) - 1) . ' days'$tiempoSemana);
      
      
// Obtengo el timestamp del resto de los días a partir del lunes
      // Los guardo en un arreglo 
      
$diasSemana = array ();
      for (
$i 0$i 7; ++$i
      {
            
$diasSemana[] = strtotime('+' $i ' days'$lunesSemana);
    }
    
// Retorno el arreglo de dias de una semana..
      
return $diasSemana;


Si quieres obtener la semana en que se encuentra una fecha dada, puedes probar esto:

Código PHP:
//para 02/01/2009  ->  02 de enero de 2009

$semana date('W',  mktime(0,0,0,01,02,2009)); 

El único detalle es que genera conflicto entre los años que tienen 52 y los que tienen 53 semanas, pero verificando eso me parece que funciona muy bien.

Espero te pueda ayudar.

Saludos cordiales
  #6 (permalink)  
Antiguo 27/06/2009, 20:44
Avatar de pablolennin  
Fecha de Ingreso: diciembre-2008
Ubicación: Trujillo
Mensajes: 169
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Primer y ultimo día de una Semana N (comenzando X el 1er lunes del Año)

no funciona

$a=getDiasEnSemana (24, 2009);
foreach($a as $k)
{
echo $k."<br>";
}
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:06.