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

Reply via email to