FoxPro/Visual FoxPro - Funcion para saber cunatos dias tiene el mes que e

 
Vista:

Funcion para saber cunatos dias tiene el mes que e

Publicado por Tana (1 intervención) el 17/10/2002 19:07:50
Quiero saber cuantos dias tiene el mes en el que estoy trabjando sin importar si es año viciesto...

gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Alvaro Padilla (146 intervenciones) el 17/10/2002 23:09:20
Bueno.. se me acaba de ocurrir esto...

Day(Gomonth(Date()-Day(Date()),1))

espero te sirva

aps
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Eduardo
Val: 114
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Eduardo (114 intervenciones) el 13/04/2016 22:38:17
Buena función la del colega Alvaro Padilla.

En mi caso y para sólo tener que pasar como parámetros el mes y el año, me hice esta funcioncita

1
2
3
4
5
6
7
8
9
FUNCTION FechaCorrecta(xMes,xAño)
*Retornará fecha existente en el rango máximo, indicando fecha de día posible
FOR xxI=31 TO 28 STEP -1
	xxFec=CTOD(STRZERO(xxI,2)+"/"+STRZERO(xMes,2)+"/"+STRZERO(xAño,4))
	IF ! EMPTY(xxFec)
		EXIT
	ENDIF
NEXT xxI
RETURN xxFec

* Nota: la función STRZERO() no existe en VFP, y es otra que hice para cubrir a la izquierda de un valor numérico los ceros que quiero que aparezcan al momento de convertirlo en un valor alfanumérico:

1
2
3
FUNCTION STRZERO(xNum,xCeros)
	xVar=ALLTRIM(STR(xNum))
RETURN RIGHT(REPLI("0",xCeros)+xVar,xCeros)

Por cierto, el nombre de esa función me la "robé" de Clipper 5, lenguaje en el que programaba hace mucho tiempo.

Entonces, para averiguar los días del mes: fechacorrecta(4,2016)

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Fidel José (657 intervenciones) el 14/04/2016 00:35:11
Esto te ahorra el problema de la conversión y de STRZERO.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PROCEDURE Ultimo_Dia
*--------------------------------------
LPARAMETERS tnAno,tnMes
tnAno = EVL(tnAno,YEAR(DATE()))
tnMes = EVL(tnMes,MONTH(DATE()))
LOCAL i,ldLast
FOR i = 31 TO 28 STEP -1
	ldLast = DATE(tnAno,tnMes, i )
	IF !EMPTY(ldLast)
		EXIT
	ENDIF
NEXT
RETURN ldLast
ENDPROC

De paso te comento, STRZERO en Visual Fox se debería escribir así
1
2
3
4
5
PROCEDURE STRZERO
*------------------------------------
LPARAMETERS tnNum , tnCeros
RETURN PADL( TRANSFORM(tnNum) , tnCeros , "0" )
ENDPROC
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
Imágen de perfil de Eduardo
Val: 114
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Eduardo (114 intervenciones) el 14/04/2016 22:17:17
Gracias por las observaciones.

Lo que sucede es en algunos casos utilizo el formato de función y otros de procedimiento. Ambos son válidos

Saludos y de nuevo muchas gracias.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Fidel José (657 intervenciones) el 14/04/2016 22:35:31
En Visual Fox FUNCTION o PROCEDURE pueden devolver un valor, por lo que usar uno u otro parece, en principio, indistinto.
Yo me decidí por utiilzar PROCEDURE por dos motivos:
1) Por la compatibilidad con métodos de clases y formularois para los que utilizamos FOXBIN2PRG (de Fernando D. Bozzo).
2) Porque para un parser que analiza el código escrito y los llamados a procedimientos, se evita la complicación de tener que buscar entre FUNCTION y PROCEDURE.

Como también vengo del Clipper 5.01, tuve que acostumbrame a escribir:
PROCEDURE talProc
LPARAMETERS tcParam, tnParam, tdParam

En reemplazo del aparentemente más simple
PROCEDURE talProc( tcParam, tnParam, tdParam ) o FUNCTION talProc( tcParam, tnParam, tdParam )
que funciona exactamente de la misma manera y no necesita la declaración de LPARAMETERS, porque lo hace automático.
Pero, cuando necesitás meter el código en una clase, tenés el fastidio de tener que reformar.

Con Foxbin2prg y un poco de ingenio, resulta bastante sencillo transformar un PRG de funciones, en una clase custom.
Pero si luego quieres utilizar un program tipo Diff para comparar, la cosa se complica, porque te llena de diferencias irrelevantes.
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

RE:Funcion para saber cunatos dias tiene el mes qu

Publicado por Jonatan (4 intervenciones) el 01/10/2016 16:44:26
Amigo, creo que asi esta mejor escrito:
DAY(GOMONTH(Date(),1)-Day(Date()))
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