FoxPro/Visual FoxPro - CALCULO DE FECHAS

 
Vista:

CALCULO DE FECHAS

Publicado por MARTIN (25 intervenciones) el 26/09/2017 17:43:17
BUEN DIA EXPERTOS..
TENGO UN PROBLEMA ESPERO ME APOYEN POR FAVOR..
ES LO SIGUIENTE:
TENGO UN FORMULARIO CON LOS SIGUIENTES....
EN UN TEXT1. (ESTA LA FECHA DE INICIO)
TEXT2. (ESTA LA FECHA DE FIN)
TEXT3. (RESPUESTA)

LO QUE DESEO ES QUE ME MUESTRE
EN LETRAS POR EJEMPLO.
SI SE INGRESA.

(01/01/2017) Y (02/02/2017)

EN EL TEXT3. ME RESULTA (UN MES Y 2 DÍAS) Y ASÍ SEGÚN SE INGRESA EN LA FECHA DE INICIO Y FINAL

ESPERO SU APOYO..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
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

CALCULO DE FECHAS

Publicado por Fidel José (657 intervenciones) el 27/09/2017 02:00:19
Puedes usar esta función ( o modificarla a tu gusto)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
PROCEDURE Calcular_Edad
LPARAMETERS td_Fecha_Ini,td_Fecha_Fin
***************************
* td_Fecha_Ini es la fecha inferior
* td_Fecha_Fin es la fecha superior o Date()
* ----------------------------------------------
* Respuesta
* LoResp = Calcular_Edad(date(1958,4,11),date())
* ? loResp.Tiempo
* ----------------------------------------------
 
LOCAL nMeses,nDetanos,ndias,lnDia_Ini,lnDia_Fin,;
	loObj as Object
 
 
td_Fecha_Fin = EVL(td_Fecha_Fin,DATE())
 
nDetanos =Year(td_Fecha_Fin)-Year(td_Fecha_Ini) - 1
nMeses =12-Month(td_Fecha_Ini) + Month(td_Fecha_Fin) - 1
 
do case
	case Day(td_Fecha_Ini) = Day(td_Fecha_Fin)
		nMeses = nmeses+1
	case Day(td_Fecha_Fin) > Day(td_Fecha_Ini)
		nMeses = nmeses + 1
	case Day(td_Fecha_Fin) < Day(td_Fecha_Ini)
		nMeses = nMeses
endcase
if nMeses >= 12
	nMeses =nMeses - 12
	nDetanos =nDetanos + 1
endif
 
if Day(td_Fecha_Ini)=Day(td_Fecha_Fin)
	nDias =0
else
	lnDia_Ini =Day(td_Fecha_Ini)
	lnDia_Fin =Day(td_Fecha_Fin)
	if Day(td_Fecha_Fin) > Day(td_Fecha_Ini)
		nDias =Day(td_Fecha_Fin) - Day(td_Fecha_Ini)
	else
		lnxMes =month(td_Fecha_Fin)-1
		lnxano =Year(td_Fecha_Fin)
		if lnxMes = 0
			lnxMes =12
			lnxano =lnxano-1
		endif
		nDias = lnDia_Fin + DAY(GOMONTH(DATE(lnxAno,lnxMes,1),1)-1 ) - m.lndia_INi
	endif
endif
loObj = NEWOBJECT("Empty")
ADDPROPERTY(loObj,"tiempo", transform(nDetanos) + iif(nDetanos>1," Años "," Año ");
		+ transform(nmeses) + iif(nmeses>1," Meses "," Mes ") ;
		+ transform(ndias) + iif(ndias>1," Días "," Día ") )
ADDPROPERTY(loObj,"Anios",m.nDetanos)
ADDPROPERTY(loObj,"Meses",m.nMeses)
ADDPROPERTY(loObj,"Dias",m.ndias)
 
REturn loObj
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 Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

CALCULO DE FECHAS

Publicado por Abel (286 intervenciones) el 27/09/2017 15:49:06
Local nMes, dDia1, dDia2, dMes1, dMes2, nDify, cMeses, nCant, nX, nY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
dDia1  = Date(2015,3,16)
dDia2  = Date(2017,7,15)
 
Clear
* --- Definir Variables. ---
dMes1  = Month(dDia1)
dMes2  = Month(dDia2)
nDify  = Year(dDia2)-Year(dDia1)
cMeses = "Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Setiembre,Octube,Noviembre,Diciembre"
* --- Contar cantidad de meses. ---
If nDify>0
	nCant = ((dMes2+(12*nDify))-dMes1)+1
Else
	nCant = (dMes2-dMes1)+1
Endif
* --- Leer y mostrar meses y años. ---
nMes = dMes1
For nX=Year(dDia1) To Year(dDia2)
	nConteo = Iif(nX=Year(dDia2),dMes2,12)
	For nY=nMes To nConteo
		cMes = Getwordnum(cMeses,nMes,",")
		nMes = nMes+1
		nMes = Iif(nMes=13,1,nMes)
		? cMes+"/"+Transform(nX)         && MUESTRA MES A MES.
	Next
Next
* --- Diferencia en días. ---
nDia1 = Iif(Day(dDia1)=1,0,(Gomonth(Date(Year(dDia1),dMes1,1),1)-1)-dDia1)
nCant = nCant-Iif(nDia1=0,0,1)
* --- Resultado. ---
? "Cantidad de Meses = "+Transform(nCant)        				&& AQUI MUESTRA CANT. DE MESES.
? "Días Restantes del 1er. Mes = "+Transform(nDia1) 			&& CANTIDAD DE DIAS RESTANTES DEL MES1.
? "Días transcurridos del 2do. Mes = "+Transform(Day(dDia2)) 	&& CANTIDAD DE DIAS TRANSCURRIDOS.
Return
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