Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
What is best way to calculate age
Message
From
21/09/2006 13:03:11
 
 
To
21/09/2006 12:03:37
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01155605
Message ID:
01156083
Views:
28
>>>>No problem and I don't care if you use or not. Woould you tell me what do you mean by "since this class returns an incorrect result"?
>>>>Cetin
>>>
>>>
>>>WITH CREATEOBJECT("age")
>>>
>>>	.CalcAge({^1988/2/29} ,  {^2006/09/21 })
>>>
>>>	CLEAR
>>>	
>>>	? .Years , .Months , .Days
>>>	* CHECK with the correct definition Age = (((Birth+Y)+M)+D)
>>>	?  GOMONTH(GOMONTH({^1988/2/29},.Years*12),.Months)+.Days
>>>	* CHECK with a bad definition
>>>	?  GOMONTH({^1988/2/29},.Years*12+.Months) + .Days
>>>	?  gomonth(GOMONTH({^2006/09/21} - .Days, - .Months), - .Years *12)
>>>ENDWITH
>>
>>18 years, 6 months and 22 days. Correct. I don't understand why you say it's a bad definition. Use pen and pencil.
>>Cetin
>
>Cetin, try this. Do it with the above - {^1988/02/29}, {^2006/09/21}
>18 years, 6 months, 22 days.
>
>Now try it with {^1988/03/01}, {^2006/09/21}
>18 years, 6 months, 20 days
>
>It should only be 1 day less than the first attempt, not 2 days.

The rule:
birth + 1 then age + 1
is not valid

post these ages:
{^1988/02/28}, {^2006/02/28}

{^1988/02/29}, {^2006/02/28}

{^1988/01/28}, {^1989/02/28}

{^1988/01/29}, {^1989/02/28}

{^1988/01/30}, {^1989/02/28}

{^1988/01/31}, {^1989/02/28}
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform