Cálculo Número de Semana

Cómo lo haceis vosotros? Según la norma ISO 8601, que empieza
a contar la semana que tiene al menos 4 días, o empezais a contar
a partir del día 1 de enero y vais sumando las semanas?
esto en software libre? mm... si pensamos que nosotros somos libres, pos vale, pero la parte del software aun no la acabo de comprender :P
A lo mejor es para diseñar algún programa que indique el número de la semana... Aún así, algunos lenguajes traen una función específica para el caso.
El lenguaje que uso no tiene funciones de ese tipo. Como mucho
puedo saber el día de la semana de una fecha en concreto, pero
para saber el número de ésta, pues hay gente que empieza a
contar desde el día 1 de enero, y otros siguen esa norma ISO.

Cuál es la manera más usada para saberlo?

Sorry si esto no va aquí, pero no he encontrado un foro de
programación ...si está mal, que lo muevan.

Saludos
Para programación: http://www.elotrolado.net/foro_Otras-Consolas-Desarrollo_152 ahí seguramente habrá mas gente que conozca la respuesta, yo no sabría decirte, lo siento, pero a ver si ellos saben ^^
Tomo nota, Belkar, y gracias!
Ese es un foro para desarrollo de consolas y no para el desarrollo de cosas para PC.


Sobre la fecha, al parecer gnome cuando la primera semana del año tiene 4 o más dias ya la cuenta como semana 1.


Un saludo.
Sí, es lo que dice la norma ISO 8601. Pero al parecer poca
gente la conoce Oooh

De todas maneras, creo que voy a seguirla tal como especifica,
ya que el cliente es indiferente al respecto.

Gracias y saludos
me rompi la cabeza en su dia con eso.

necesitas dos cosas:
- rutina que dada una fecha cualquiera, proporcione el dia de la semana (lunes, martes, miercoles... etcetc) entendiendo como lunes-0->6-domingo o algo similar
- rutina que dadas dos fechas, de el numero de dias de diferencia entre ellas

la norma ISO8601 indica que si la primera semana tiene menos de 3 dias, no debe ser contada como la primera semana, sino como la ultima del año anterior. si la primera semana tiene 4 o mas dias, si debe ser considerada como la primera semana del año.

tu problema se divide, de esta forma, en dos subproblemas de facil solucion:
1) ¿que fecha fue el primer lunes de la primera semana del año?
2) ¿cual es la distancia en DIAS desde la fecha que quiero calcular su numero de semana a la fecha del lunes de la primera semana del año? realizando una division entre 7, que es el numero de dias que tiene una semana, tienes tu buscado numero de semana

la respuesta a la pregunta numero 1, que es la complicada es:
saca el dia de la semana del dia 1 de enero del año en cuestion:
- si el dia en cuestion es jueves o anterior, el dia 1 de enero de dicho año ES la primera semana, ahora solo tendras que calcular que fecha fue dicho lunes, para eso, simplemente coge (1/1/yyyy)-dia de la semana en numero(ya sabes, 0 para lunes y 6 para domingo).
- si el dia en cuestion es viernes o superior, la semana SIGUIENTE es la primera semana del año, asi que calcula el lunes de dicha semana siguiente.

tabla resumen:
si (1/1/yyyy)=(lunes) entonces lunes de la semana 1=1/1/yyyy
si (1/1/yyyy)=(martes) entonces lunes de la semana 1=31/12/yyyy-1
si (1/1/yyyy)=(miercoles) entonces lunes de la semana 1=30/12/yyyy-1
si (1/1/yyyy)=(jueves) entonces lunes de la semana 1 es 29/12/yyyy-1
si (1/1/yyyy)=(viernes) entonces lunes de la semana 1 es 4/1/yyyy
si (1/1/yyyy)=(sabado) entonces lunes de la semana 1 es 3/1/yyyy
si (1/1/yyyy)=(domingo) entonces lunes de la semana 1 es 2/1/yyyy

en fins, con esta tabla resumen/precalculada, y la rutina de diferencia de dias y su correspondiente division entre 7, ya tienes tu problema resuelto.

ya pueden cerrar el telon :D
Caray! Vaya currazo, F5inet!!! :-)

Muy bien explicado, pero la tabla no me hace falta.

Gracias de todos modos,

Enzo
9 respuestas