On 11/9/2013 1:41 PM, Michael Van Canneyt wrote:
On Sat, 9 Nov 2013, waldo kitty wrote:
digging deeper to work directly with YearsBetween and MonthsBetween shows that
they seem to be missing the usual "+0.5" generally used to ensure that
rounding is properly handled...
You misunderstood these functions.
There is no rounding necessary. The routines are correct.
Only FULL years/months/day must be counted.
ahhh...
See the documentation in e.g.
http://www.freepascal.org/docs-html/rtl/dateutils/yearsbetween.html
yes, i've been digging in them all day since this thread came up ;)
If you want partial years counted, you need the *Span functions.
http://www.freepascal.org/docs-html/rtl/dateutils/yearspan.html
i'll have to look at those... i've been looking for something that can (without
having to reinvent the wheel) show that the difference between
2013 01 01 00:00:00.000 and
2013 01 01 00:00:00:001 is
0 Years, 0 Months, 0 Days, 0 Hours, 0 Minutes, 0 Seconds, 1 Msecond
whereas
2013 01 01 00:00:00.000 and
2013 01 01 00:00:00:100 is
0 Years, 0 Months, 0 Days, 0 Hours, 0 Minutes, 0 Seconds, 100 Msecond
and
2013 01 01 00:00:00.000 and
2013 01 01 00:00:01:001 is
0 Years, 0 Months, 0 Days, 0 Hours, 0 Minutes, 1 Seconds, 1 Msecond
and
2013 01 01 00:00:00.000 and
2014 02 02 01:01:01:001 is
1 Years, 1 Months, 1 Days, 1 Hours, 1 Minutes, 1 Seconds, 1 Msecond
and also being able to include Weeks in there if we are eg: 1, 2 or 3 weeks into
a month...
i will take a look at the SPAN functions and see if they will provide what i've
been (silently) looking for ;)
--
NOTE: No off-list assistance is given without prior approval.
Please keep mailing list traffic on the list unless
private contact is specifically requested and granted.
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus