[fpc-pascal] Possible bug in return value of MonthsBetween function in unit dateutils

Vincent Snijders vsnijders at vodafonevast.nl
Thu Dec 10 12:30:05 CET 2009

Funky Beast schreef:
> Hi,
> When trying to get the number of months between the following dates:
> 01-06-2009 and 01-08-2008
> MonthsBetween returns: 9 months.
> That is clearly wrong (fundamentally counting with my fingers yields 10 
> months).
> Looking at the function in dateutils.inc, I copied the function 
> implementation to do a test.
> Now, if I strip away Trunc() from the function, the result is: 9.98767967.
> Trunc() simply strips away the decimals behind, which returns: 9.
> I'm wondering if Round() should be used instead of Trunc().

For such easy question, I use google:

http://www.freepascal.org/docs-html/rtl/dateutils/monthsbetween.html states that 
"This number is an approximation, based on an average number of days of 30.4375 per 
month". 9 is approximately 10, so the is behavior you see is as documented ;-)


More information about the fpc-pascal mailing list