Foros del Web » Programando para Internet » Javascript »

Número de Semana del Año

Estas en el tema de Número de Semana del Año en el foro de Javascript en Foros del Web. Amigos Foreros, buenos días, quisiera saber como puedo obtener el número que le corresponde a una semana de domingo a sábado. Tengo una función que ...
  #1 (permalink)  
Antiguo 06/02/2008, 10:58
 
Fecha de Ingreso: julio-2005
Mensajes: 51
Antigüedad: 19 años, 5 meses
Puntos: 1
Número de Semana del Año

Amigos Foreros, buenos días, quisiera saber como puedo obtener el número que le corresponde a una semana de domingo a sábado. Tengo una función que me obtiene el número de la semana, pero no funciona como yo quiero :

Por ejemplo, la semana del 30/12/2007 al 05/01/2008 me la parte porque los días de 30 y 31 de diciembre le coloca el número de la semana 52 del año 2007 y los días del 01 al 05 de enero los toma como la semana 1 del año del 2008.

Pero lo que yo necesito es que la semana del 30/12/2007 al 05/01/2007 sea la semana número 52, y la semana número 1 sería la que corresponde del 06 al 12 de enero de 2008.

Muchas gracias por su ayuda.

Atte.
  #2 (permalink)  
Antiguo 06/02/2008, 14:53
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años
Puntos: 61
Re: Número de Semana del Año

No lo he probado mucho, pero igual funciona:

Código PHP:
<script>
function 
saberSemana(d,m,a){
fecha=new Date(a,0,1);
primerDiaDelAno=fecha.getDay();
fecha2=new Date(a,m,(d+7-primerDiaDelAno));
tiempopasado=fecha2-fecha;
semanas=Math.floor(tiempopasado/1000/60/60/24/7);
if(
semanas==0){semanas=52}
alert(semanas)
}
saberSemana(6,1,2008)

</script> 
Para ejecutarlo sólo tienes que llamar a la función poniendo como variables primero el día, luego el mes y luego el año.
Recuerda que los meses en javascript comienzan por cero (enero es el mes 0, febrero el 1...)

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 06/02/2008, 15:13
 
Fecha de Ingreso: julio-2005
Mensajes: 51
Antigüedad: 19 años, 5 meses
Puntos: 1
Re: Número de Semana del Año

Gracias KarlanKas, pero fíjate que no me funciona para algunas fechas por ejemplo, si ingreso 27/12/2007 igual me da como resultado número 52 y debería de dar 51.
  #4 (permalink)  
Antiguo 06/02/2008, 15:20
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años
Puntos: 61
Re: Número de Semana del Año

Había un problema. Ya está:

Código:
<script>
anado=[2,1,7,6,5,4,3];
function saberSemana(d,m,a){
fecha=new Date(a,0,1);
primerDiaDelAno=anado[fecha.getDay()];
fecha=new Date(a,0,primerDiaDelAno);
fecha2=new Date(a,m,(d+primerDiaDelAno));
tiempopasado=fecha2-fecha;
semanas=Math.floor(tiempopasado/1000/60/60/24/7);
if(semanas==0){semanas=52}
alert(semanas)
}
saberSemana(3,1,2008)

</script>
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 06/02/2008, 15:54
 
Fecha de Ingreso: julio-2005
Mensajes: 51
Antigüedad: 19 años, 5 meses
Puntos: 1
Re: Número de Semana del Año

Gracias, por responden rápido, sí me función para los días que te describí anteriormente, pero ahora que pruebo con los días del 1 al 7 de enero 2008, no funciona, ahora me despliega para esos días "52".

Figurate que quise solucionar pero no puede. No entiendo cómo o para qué utilizas la siguiente línea ¿? :

anado=[2,1,7,6,5,4,3];

He estado investigando y creo que esto se relaciona algo con el calendario juliano (aunque no estoy seguro), pero solo he encontrado explicaciones y no he encontrado algun algoritmo para calcular el número de semana...
  #6 (permalink)  
Antiguo 06/02/2008, 16:04
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años
Puntos: 61
Re: Número de Semana del Año


Esa linea que te intriga determina qué día de enero empieza la primera semana completa basándose en el día de la semana que corresponde al día 1 de enero. Tal y como estaba antes, si el 1 de enero es domingo la primera semana comienza el día 2, si es lunes, empieza (obviamente) el día 1, si empieza en martes hasta el dia 7 no empieza la primera semana completa...

Acabo de releer tu post. No había tenido en cuenta que tu semana empieza en domingo. Por ello la linea que te intriga debes cambiarla por esta:

anado=[1,7,6,5,4,3,2]

Quedando así:
Código:
<script>
anado=[1,7,6,5,4,3,2];
function saberSemana(d,m,a){
fecha=new Date(a,0,1);
primerDiaDelAno=anado[fecha.getDay()];
fecha=new Date(a,0,primerDiaDelAno);
fecha2=new Date(a,m,(d+primerDiaDelAno));
tiempopasado=fecha2-fecha;
semanas=Math.floor(tiempopasado/1000/60/60/24/7);
if(semanas==0){semanas=52}
alert(semanas)
}
saberSemana(6,0,2007)

</script>
Espero que ya funcionará tal y como esperas.

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 06/02/2008 a las 16:08 Razón: No tuve en cuenta que empezaba la semana en domingo
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

SíEste tema le ha gustado a 1 personas




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