# [Lazarus] DateDif function needed

Junior lazarus.linux at gmail.com
Sat Nov 16 18:52:12 CET 2013

```After all, what would the optimum solution?

Em 16-11-2013 14:40, Michael Van Canneyt escreveu:
>
>
> On Sat, 16 Nov 2013, Reinier Olislagers wrote:
>
>> On 16/11/2013 18:21, Michael Van Canneyt wrote:
>>> On Fri, 15 Nov 2013, Bart wrote:
>>>> The fun part for me is the fact that a seemingly simple question,
>>>> where at first glance you would think "I'll just implement that", can
>>>> lead to so many "problems".
>>>
>>> I added a modified version of your implementation to the DateUtils
>>> unit as:
>>>
>>> Procedure PeriodBetween(Const ANow, AThen: TDateTime; Out Years,
>>> months,
>>> days : Word);
>>>
>>> I chose this name because it is more in line with the existing
>>> XXXBetween functions.
>>>
>>> I did change the algorithm so it does not do the correction for
>>> february
>>> of the leap year.
>>> It returns now the same results as the Jedi function. (which I didn't
>>>
>>> Thanks for providing an implementation.
>>
>>
>> A suggestion if I may: given the wide variation of possibilities of
>> interpretation, some comments in the code about how the calculation is
>> supposed to work would be very much appreciated, I'm sure.
>> (Of course, that applies even more to added documentation).
>>
>> Just wanted to avoid another huge thread discussing PeriodBetween in
>> future... as well as confusion on the part of possible users in general.
>
> When documenting, all will be explained.
>
> I think it's fairly simple, really.
>
> Keep adding 1 to year of D till your jumps over D2. If you jumped
> over, substract 1 from year.
> Keep adding 1 to month of D till D jumps over D2. If you jumped over,
> substract 1 from month.
> Keep adding 1 to day of D till D reaches D2.
>
> The number of years, months, days you thus added is the period. I may
> fiddle a bit with the definition of "jumps over" and "reaches", but
> essentially that is it.
>
> Michael.
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>

```