Son Once Meses y 30 días, para que te de 12 meses tiene que ser el mismo día, o si por ejemplo si tu naciste el día 25, celebras tu cumpleaños el día 24?
;-)
Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com
LOCAL loDifFecha AS Object;
,lnMeses AS Integer;
,ldFecha1 AS Date;
,ldFecha2 AS Date
m.ldFecha1 = DATE(2016,01,01) &&CTOD('01/01/2016')
m.ldFecha2 = DATE(2016,12,31) &&CTOD('31/12/2016')
m.loDifFecha = ContarMeses(m.ldFecha1, m.ldFecha2, .T.)
m.lnMeses = (12 * m.loDifFecha.AAAA) + m.loDifFecha.MM
? m.lnMeses
RELEASE m.loDifFecha,m.lnMeses,m.ldFecha1,m.ldFecha2
FUNCTION ContarMeses(tdFecIni, tdFecFin AS Date, tlIncluyeFecFin) AS Object
LOCAL loDifFec AS "Empty"
LOCAL lcDiasMes, lnAaaaDif, lnAaaaFecFin, lnAaaaFecIni;
, lnDdDif, lnDdFecFin, lnDdFecIni, lnMmDif
LOCAL lnMmFecFin, lnMmFecIni
LOCAL tdFecTmp
lnSigno = 1
IF m.tdFecIni > m.tdFecFin
tdFecTmp = m.tdFecIni
tdFecIni = m.tdFecFin
tdFecFin = m.tdFecTmp
lnSigno = -1
ENDIF
* Ésta línea es la que se aumenta a la funcion original (Junto con el parámetro tlIncluyeFecFin *
m.tdFecFin = m.tdFecFin + IIF(VARTYPE(tlIncluyeFecFin)='L' AND tlIncluyeFecFin,1,0)
lnAaaaFecIni = YEAR(m.tdFecIni)
lnMmFecIni = MONTH(m.tdFecIni)
lnDdFecIni = DAY(m.tdFecIni)
lnAaaaFecFin = YEAR(m.tdFecFin)
lnMmFecFin = MONTH(m.tdFecFin)
lnDdFecFin = DAY(m.tdFecFin)
lcDiasMes = "31 31 " ;
+ IIF(DAY(GOMONTH(DATE(YEAR(m.tdFecFin), 1, 31), 1)) = 29, "29 ", "28 ") ;
+ "31 30 31 30 31 31 30 31 30 31"
lnMmFecFin = m.lnMmFecFin - IIF(m.lnDdFecFin < m.lnDdFecIni, 1, 0)
lnDdDif = m.lnDdFecFin ;
+ IIF(m.lnDdFecFin < m.lnDdFecIni, VAL(GETWORDNUM(m.lcDiasMes, m.lnMmFecFin + 1)), 0) - m.lnDdFecIni
lnMmDif = m.lnMmFecFin + IIF(m.lnMmFecFin < m.lnMmFecIni, 12, 0) - m.lnMmFecIni
lnAaaaDif = m.lnAaaaFecFin - IIF(m.lnMmFecFin < m.lnMmFecIni, 1, 0) - m.lnAaaaFecIni
loDifFec = CREATEOBJECT("Empty")
ADDPROPERTY(m.loDifFec, "Aaaa", m.lnAaaaDif * m.lnSigno)
ADDPROPERTY(m.loDifFec, "Mm", m.lnMmDif * m.lnSigno)
ADDPROPERTY(m.loDifFec, "Dd", m.lnDdDif * m.lnSigno)
RETURN (m.loDifFec)
ENDFUNC
Yo creo que ya que se modifica la función se
debería tomar Fecha-Hora para si si completar el periodo desde
la 00:00:00 horas del día inicial, hasta las 23:59:59 del día
final
Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com