Página 1 de 1

Numero de la semana

Publicado: 04 Mar 2013 15:52
por soyjuma
Muy buenas a todos. hacia mucho que no posteaba nada por aqui.
Hoy ha tocado de nuevo hacerlo y esta vez para una pregunta. Se como sacar el dia, el mes, el dia de la semana inclusive el año en el que estamos a través de la programación, pero .............. ¿ cómo puedo saber la semana del año en la que estamos ? Lo estoy intentando de diversas formas pero creo ya he llegado a un bucle del cual no salgo. ¿ Una ayuda ? ............... gracias.

Re: Numero de la semana

Publicado: 04 Mar 2013 15:58
por SpeakerTrading

Re: Numero de la semana

Publicado: 04 Mar 2013 16:02
por soyjuma
SpeakerTrading escribió:Quizá sea esto:

http://www.ozgrid.com/forum/showthread.php?t=41999
Con eso sigo teniendo el mismo inconveniente. Hoy estoy muy espeso, pero no consigo aplicar eso en Visualchart.

Re: Numero de la semana

Publicado: 04 Mar 2013 16:03
por Gamelu
Define un punto de partida, haces una resta de fechas, te dara el numero de dias de intervalo y lo divides entre 7

Re: Numero de la semana

Publicado: 04 Mar 2013 16:06
por Gamelu
p.d:un año tiene 52 semanas

Re: Numero de la semana

Publicado: 04 Mar 2013 16:24
por soyjuma
Gamelu escribió:Define un punto de partida, haces una resta de fechas, te dara el numero de dias de intervalo y lo divides entre 7
Pero el punto de partida es variable en funcion de que es lo que se grafique, sin embargo el numero de semana si que es fijo independientemente de ese punto de partida. Y lo que busco es como saber hoy, en que semana del año me encuentro. El formato de fecha que devuelve VC lo tenemos en YYYYMMDD, formato militar, del cual puedo y ya se extraer el dia, el mes, el dia de la semana tal como lo he expuesto al inicio. Espero explicarme bien en mi problemática actual.
Gracias

Re: Numero de la semana

Publicado: 04 Mar 2013 17:05
por Gamelu
Por ejemplo el 01/01/2012 es semana 1,

hoy 4/3/2013 - 01/01/2012 = 428

428/7=61,14
No puede ser mayor a 52 , por lo tanto

61,14 - 52 = 9,14

Estamos en la semana 10 , eso es lo que tienes que programar

Re: Numero de la semana

Publicado: 04 Mar 2013 17:14
por soyjuma
Gamelu escribió:Por ejemplo el 01/01/2012 es semana 1,

hoy 4/3/2013 - 01/01/2012 = 428

428/7=61,14
No puede ser mayor a 52 , por lo tanto

61,14 - 52 = 9,14

Estamos en la semana 10 , eso es lo que tienes que programar
Bien eso hasta creo sabria hacerlo, pero el grafico es variable en el tiempo y no le puedo poner una fecha de partida fija. Puede que la primera fecha del grafico sea del año 2003 y la de hoy ................. o la inicial sea de 1999 o ...... cualquier fecha de cualquier momento.
Es para revisar como se comportan determinadas materia primas y/o indices en funcion de la semana del año en que nos encontremos, buscando un comportamiento repetitivo. Por ejemplo, sin que sirva para nada en concreto, posicionarse largo la primera semana del año y posicionarse corto la 33 semana del año ...... o ................ según pueda estudiarlo.
Gracias de nuevo

Re: Numero de la semana

Publicado: 04 Mar 2013 17:26
por Gamelu
Que necesites de un punto de partida no tiene que obligarte a meterlo tu manualmente, sino que el punto de partida puedes y debes de usar el año actual el mes 01 y dia 01, ...

Vamos que tienes que hacer otro script par que el punto de partida sea el 01/01/año .

Re: Numero de la semana

Publicado: 04 Mar 2013 17:56
por soyjuma
Gamelu escribió:Que necesites de un punto de partida no tiene que obligarte a meterlo tu manualmente, sino que el punto de partida puedes y debes de usar el año actual el mes 01 y dia 01, ...

Vamos que tienes que hacer otro script par que el punto de partida sea el 01/01/año .
Voy a intentarlo por esa vía, aunque debo estar muy torpe hoy, porque los primeros inte tos no me sale correctamente.
Gracias de nuevo

Re: Numero de la semana

Publicado: 07 Mar 2013 10:02
por soyjuma
No lo he conseguido perfecto, pero casi e inicialmente puede ser que me sirva para lo que andaba buscando. Expongo aqui el código de lo programado por si alguien quiere o puede mejorarlo para determinados días que da un fallo de 1 semana. A parte de no tener en cuenta los años bisiestos, donde febrero tendría 29 días.

anyo = Int(.Date / 10000)
mes = Int(.Date / 100) - (anyo * 100)
dia = Int(.Date) - (mes * 100) - (anyo * 10000)
cadena = dia & "/" & mes & "/" & anyo
diasemana = DatePart("w", cadena, 2) '1=lunes,2=martes,3=miercoles,4=jueves,5=viernes

If anyo <> Int(.Date(1) / 10000) Then Semana = 1

If mes = 1 Then
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 2 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 3 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 4 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 5 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 6 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 7 Then Semana = 52
End If

If mes = 1 And DatePart("w", 4 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 3 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 2 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1

'If diasemana = 1 And .Date <> .Date(1) Then Semana = Semana + 1
If mes = 1 And dia >= 3 And dia < 7 Then Semana = 1
If mes = 1 And dia >= 7 And .Date <> .Date(1) Then
Semana = Semana + Int(dia / 7)
SemanaActual = Semana
End If
If mes = 1 And dia >= 7 And .Date = .Date(1) Then Semana = SemanaActual

If mes = 2 Then
Semana = Int(dia + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If

If mes = 3 Then
Semana = Int(dia + 31 + 28) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If

If mes = 4 Then
Semana = Int(dia + 31 + 28 + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If

If mes = 5 Then
Semana = Int(dia + 31 + 28 + 31 + 30) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If

y asi sucesivamente para el resto de meses ....
Un saludo