GeneXus - Muestre número de semana del año

   
Vista:
Imágen de perfil de Marco Ricord

Muestre número de semana del año

Publicado por Marco Ricord (30 intervenciones) el 30/01/2015 20:08:43
Necesito algun procedimiento para extraer la semana del año dependiendo del reloj local de PC (Now()) por ejemplo estamos a 30 de enero 2015, el resultado sería 5, ya que es la quinta semana del año.

En esta página se vé claramente como deberían ser las semanas "Week ##" este año se compone de 53 semanas.

http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Andrés

Muestre número de semana del año

Publicado por Andrés (3 intervenciones) el 02/02/2015 04:20:57
Yo Haría algo asi en un procedure:
donde:
- &Date, &FechaPar, &FechaTmp, &prdia son de tipo Date
- &nrosem, &anio son de tipo numeric

&Fechapar corresponde a la fecha que quieres buscar el numero de semana, (que sería today() en tu caso)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
&Date = &FechaPar
 
//AQUI BUSCAMOS EL PRIMER LUNES DE LA PRIMERA SEMANA DEL AÑO
Do 'lunes1'
//SI el primer lunes del año es mayor que la fecha que buscamos entonces necesitamos que nos devuelva
//la ultima semana del año anterior:
If &fechaTmp>&Date
	&Date = ymdtod(&FechaPar.Year()-1,12,31)
	Do 'lunes1'
endif
&anio = &Date.Year()
Do while &fechaTmp <= &Date
	&nroSem+=1
	&fechaTmp+=7
Enddo
msg("El "+&FechaPar.ToFormattedString()+" Corresponde a la semana Nro."+&nroSem.ToString()+" del año "+&anio.ToString())
 
sub 'lunes1'
	&PrDia = ymdtod(&Date.Year(),1,1)
	If DOW(&PrDia)<6 And Not DOW(&PrDia)=1
		&fechaTmp = &PrDia + iif(DOW(&PrDia)=1,-6,2-DOW(&PrDia))
	else
		&fechaTmp = &PrDia + iif(DOW(&PrDia)=1,1,9-DOW(&PrDia))
	endif
endsub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar