Page 1 of 1

mi funcion. dada una fecha devolver el rango de la semana

Posted: Wed Jun 25, 2014 3:42 pm
by goosfancito
Necesitaba que me devuelva la fecha comprendida entre el LUNES y VIERNES inclusive de una fecha dada.

Code: Select all | Expand

FUNCTION main()
    local aRango:= array(2)
    aRango:= fSemana("24/07/2014")

    msginfo("desde: " + dtoc(aRango[1]) + " hasta: " + dtoc(aRango[2]))   // desde: 21/07/2014 hasta: 25/07/2014

    RETURN (nil)

FUNCTION fsemana(dFecha) CLASS TRep
   dFecha:= dFecha - (DoW(dfecha) -2)
   RETURN ({dFecha, dFecha + 4})

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 2:18 am
by joseluisysturiz
Por favor se un poco mas especifico en lo que quieres obtener, si son los dias que hay entre las 2 fechas o que, por lo menos yo no entiendo bien pregunta, saludos... :shock:

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 4:52 am
by Manuel Valdenebro
dFecha := CTOD("24/07/2014")
nDia := DOW (dFecha)
IF nDia > 1 .and. nDia < 7
msginfo("desde: " + dtoc(dFecha-(nDia-2)) + " hasta: " + dtoc(dFecha+(6-nDia)))
ELSE
msgstop (CDOW(dFecha), "Fecha no válida.")
ENDIF

Puedes convertirlo en una función y usar un array si lo necesitas.

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 8:18 am
by colthop
Hola Manuel:

Yo usaría cDow(Fecha) que te devuelve "Lunes", "Martes" .... o "Monday", "Tuesday"... y con un do case dependiendo lo que te devuelva le quitaría para hallar la primera y sumaria para la segunda:

Mas o menos:

do case
case cdow(fecha) = "Lunes"
fechades = fecha
fechahas = fecha + 5
case cdow(fecha) = "Martes"
fechades = fecha - 1
fechahas = fecha + 4

....
...
endcase

Espero que te sirva

Un saludo

Carlos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 8:40 am
by hmpaquito
colthop,

La función de Manuel es independiente del idioma. Así que da igual que el Domingo que devuelve CDoW() sea Sunday, Dimanche, Sonntag...

Saludos.

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 8:47 am
by colthop
Hola que tal:

Me parece correcta tu observación pero todos sabemos cual es el lenguaje del compilador (o linkador) y se puede adaptar dependiendo del idioma. Ya que esta función no depende del lenguaje del usuario sino del compilador, a mi me lo devolvía en ingles pero le puse:

Code: Select all | Expand

REQUEST HB_LANG_ES
REQUEST HB_CODEPAGE_ESWIN
HB_LangSelect('ES')
HB_SetCodePage('ESMWIN')


Y ya me lo devuelve en español.

Un saludo

Carlos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 8:52 am
by colthop
Hola que tal:

Incluso pensando un poquito independientemente del lenguaje si tu pones

Tlunes = cdow(ctod("23/07/2014"))

Tu sabes que ese día es "Lunes" o "Monday" y en la variable TLunes esta. Y si luego lo comparas en Do case como "case cdow(fecha) = TLunes te entrará o no independiente del idioma.

Un saludo

Carlos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 9:27 am
by hmpaquito
colthop,

Es verdad que se puede configurar el idioma... pero imaginate que quieres hacer una funcion que se pueda incorporar a la libreria fivewin...
No es buena cosa depender de strings dependientes del idioma... son cambiantes... hay que ir a lo fijo... y lo fijo es que dow() devuelve como 1 si el dia es domingo y 2 para el lunes y asi... Da igual que el primer dia de la semana (civil) sea el lunes, da igual. Eso es fijo, aquí y en Sebastopol, en harbour, xharbour y en Clipper; con configuración de languaje inglés, ruso o thai. :)

Saludos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 9:39 am
by colthop
Hola que tal:

Tu mismo has dado la solución en vez de cDow utiliza Dow y si es 1 sabes que es domingo y 4 que es miércoles y actúa en el do case en consecuencia. Me parece muy bien lo que dices pero creo que podrías indicar soluciones o adaptar ideas y crear las soluciones en vez de criticar.

Un saludo

Carlos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 9:56 am
by hmpaquito
¿ Me puedes decir EXACTAMENTE que he criticado yo?
¿ No he hecho yo EXACTAMENTE lo mismo que tu ? A saber, aportar desde mi punto de vista una solución.
¿ No ha sido mi fin el mismo que el tuyo, que no es sino aportar ideas a la comunidad ?
¿ Puedes decirme qué cosa he hecho mal y no debería haber hecho que merece ser llamado "criticar" ?
Recias palabras las tuyas para tan poca cosa.

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 10:17 am
by colthop
Hola que tal:

Tienes toda la razón.

un saludo

Carlos

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Thu Jun 26, 2014 10:48 am
by goosfancito
jua jua.

che. no pregunté nada. solo puse la función que hice.

saludos a todos.

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Fri Jun 27, 2014 2:52 am
by joseluisysturiz
goosfancito wrote:jua jua.

che. no pregunté nada. solo puse la función que hice.

saludos a todos.

jajajaja...todos matandose y dandose de puños y goosfandito parado en una esquina viendo...ya que no pregunto nada...jajjajaj...saludos... :shock:

Re: mi funcion. dada una fecha devolver el rango de la semana

Posted: Fri Jun 27, 2014 10:15 am
by goosfancito
SEEE y no sabes como miraba jaja.

saludos!