>>ldBegin = DATE(1965, 4, 26) >>ldEnd = DATE() >>STORE 0 TO lnYear, lnMonhts, lnDays >>DO WHILE .t. >> DO CASE >> CASE GOMONTH(ldBegin,12) <= ldEnd >> lnYear = lnYear + 1 >> ldBegin = GOMONTH(ldBegin, 12) >> CASE GOMONTH(ldBegin,1) <= ldEnd >> lnMonhts = lnMonhts + 1 >> ldBegin = GOMONTH(ldBegin, 1) >> CASE ldBegin < ldEnd >> lnDays = lnDays + 1 >> ldBegin = ldBegin + 1 >> OTHERWISE >> EXIT >> ENDCASE >>ENDDO >>? lnYear, lnMonhts, lndays >>>>Of couse there is no checking for valid date period and no error handling at all. Also not well tested :-)))
ldBegin = DATE(2006, 4, 26) ldEnd = DATE() STORE 0 TO lnYear, lnMonths, lnDays DO WHILE .t. DO CASE CASE GOMONTH(ldBegin,12) <= ldEnd lnYear = lnYear + 1 ldBegin = GOMONTH(ldBegin, 12) CASE GOMONTH(ldBegin,1) <= ldEnd lnMonths = lnMonths + 1 ldBegin = GOMONTH(ldBegin, 1) CASE ldBegin < ldEnd lnDays = lnDays + 1 ldBegin = ldBegin + 1 OTHERWISE EXIT ENDCASE ENDDO ? lnYear, lnMonths, lndays ? GOMONTH(DATE(),(-lnYear*12)-lnMonths)-lndays+1