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...

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...

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!