Calcular la semana de una fecha

Vimos en otra entrada de este blog todas las conversiones de fechas, pero no exisita una que nos diera la semana del año. Si queremos hacer un informe de estadisticas semanales y nos gustaria poner en la cabecera el numero de la semana, o lo que es mas importante, usar el numero de la semana como itemid de los acumulados, necesitamos conocer este dato.

La necesidad agudiza el ingenio, asi que podemos hacernos con este simple codigo un
calculo de la semana anual a la que corresponde una fecha dada, por ejemplo la del dia en que estamos :

semana=int((date()-iconv(‘31.12.’:oconv(date(),’dy’)-1,’d’))/7)+1
print semana

 

Conversiones de Fechas

Cuando trabajamos con fechas en D3 sabemos que es importante tener en cuenta los formatos interno y externo de las fechas. A veces tenemos que hacer operaciones no habituales y no recordamos como se convertia. Voy a exponer aqui las conversiones que permiten las fechas en D3.

El formato interno es un numero que representa el numero de dias transcurridos desde el 01 de enero de 1968 , y a esa fecha se la conoce como la fecha uno (1).  Este calculo de dias nos lo hace d3 usando las conversiones de formato ‘date’.

hoy=’11/04/2013’print iconv(hoy,’d’)
Dara como resultado : 16538 que es el numero de dias desde 01.01.1968 hasta hoy

Clasificar y ordenar numeros del formato 16538 es mucho mas sencillo que trabajar con fechas en formato , digamos humano, por eso es altamente recomendable trabajar en los archivos con fechas en formato interno.

Pasar del formato interno al externo es donde tenemos multiples posibilidades de conversiones y de obtener datos diferentes. La sintaxis siempre es :

resultado=oconv(fecha_en_formato_interno,’dxx’) donde lo importante aqui es el xx que permite combinaciones interesantes con las siguientes :

Si usamos ‘d’ obtenemos la fecha en formato texto : 13 Apr 2013
d2-  muestra fecha completa separada con guiones y dos digitos para el año : 13.04.13
d4. muestra fecha completa separada por puntos y 4 digitos para el año : 13.04.2013
d/ muestra fecha completa separada con barras y 4 digitos para el año : 13/04/2013
d0 muestra dia y mes en letra sin año : 13 Apr
d0- muestra dia y mes sin año separado por guion : 13-04
dd muestra el dia en numero :13
dm muestra el mes en numero : 04
dma muestra el mes en letra, pero en ingles : april
dq muestra el trimestre en numero : 2
dw muestra el dia de la semana : 6
dwa muestra el dia de la semana en letra, pero en ingles : saturday
dy muestra unicamente el año a 4 digitos : 2013
d2y muestra unicamente el año pero en 2 digitos : 13

Muy completo, verdad, pero falta algo, cual es la semana ? que semana del año es ? Esto no lo da la conversion, pero si unas pocas lineas de programacion que dejo en otra entrada.