Page 1 of 1

Saber la Fecha con que empieza una semana (solucionado)

PostPosted: Sat Jun 06, 2009 12:47 am
by sjingo
Amigos nuevamente les molesto:

Sabiendo el año y la semana, quiero obtener la fecha con la que empieza esa semana. Será posible si alquien me hecha una mano por favor?

Un saludo a todos

Marcelo Jingo

Re: Saber la Fecha con que empieza una semana

PostPosted: Sat Jun 06, 2009 2:49 am
by Armando
sjingo:

A ver si te funciona este ejemplo que preparé "al vuelo", ya es fin de semana :D
Tal vez habrá que ajustar el código dependiendo si prefieres que la semana inicie
en domingo o en lunes.

Code: Select all  Expand view

PROCEDURE DameFecha()
LOCAL nVez      := 0
LOCAL nAmo      := 2009     // Este dato lo conocemos
LOCAL nSem      := 34       // Este otro dato tambien lo conocemos
LOCAL dFecha    := CTOD("01/01/" + STR(nAmo,4,0) +'"')
LOCAL dFecIni   := dFecha

FOR nVez := 1 TO 365
    IF WEEK(dFecha + nVez + 1) == nSem
        dFecIni += nVez
        EXIT
    ENDIF
NEXT

// Este código es solo para la primera semana del año
IF DOW(dFecIni) > 1
    dFecIni := dFecIni - (DOW(dFecIni) - 1)
ENDIF

MsgInfo(dFecIni,"La fecha buscada es:")
RETURN
 


Saludos

Re: Saber la Fecha con que empieza una semana

PostPosted: Sat Jun 06, 2009 2:51 am
by jrestojeda
Hola amigo...
Yo probaría hacerlo a mano!
Haciendo la cuenta, teniendo en cuenta que la semana tiene 7 días...
Partiendo del primero de Enero del año en cuestión luego se suma la cantidad de días transcurridos según corresponda y finalmente se resta la diferencia en el día que cae:
Ejemplo Semada 17 de 2008

Code: Select all  Expand view

Function MiFunction(nAnio,nSemana)
Local Dias,Fecha,Anio,Cae

Dias:=nSemana * 7

Anio:=ALLTRIM(STR(nAnio))

Fecha:=CTOD("01/01/"+Anio) //Quedará 01/01/2008 en formato fecha
Fecha:=Fecha+Dias

Cae:=DOW(Fecha)

DO CASE
   CASE Cae=2
     Fecha:=Fecha-1
   CASE Cae=3
     Fecha:=Fecha-2
   CASE Cae=4
     Fecha:=Fecha-3
   CASE Cae=5
     Fecha:=Fecha-4
   CASE Cae=6
     Fecha:=Fecha-5
   CASE Cae=7
     Fecha:=Fecha-6
ENDCASE

MsgInfo(DTOC(Fecha),"Fecha a inicio de la semana "+ALLTRIM(STR(nSemana))+" del año "+ALLTRIM(STR(nAnio)) )

Return Fecha
 


El MsgInfo va a mostrar la fecha que me retorna la función. En este caso la función retorna 27/04/2008. Primer día de la semana, es decir, domingo

Espero te sirva la idea.
Saludos,

Re: Saber la Fecha con que empieza una semana

PostPosted: Sat Jun 06, 2009 3:56 pm
by sjingo
Gracias Armando y Esteban

La función de Esteban funciona perfecto y es lo que buscaba. :D

La de Armando no la pude probar porque da error indicando que no encuentra la función week(), de todas maneras gracias Armando por tu interés.

Estoy muy agradecido a este foro

Marcelo Jingo

Re: Saber la Fecha con que empieza una semana (solucionado)

PostPosted: Sat Jun 06, 2009 5:00 pm
by Armando
Marcelo:

Me alegra que hayas solucionado tu problema.

La función WEEK() es de xHarbour, será por eso ?. :)

Saludos