On 13.11.2013 02:33, waldo kitty wrote:

actually, i have in some cases... let's ask this question and see what your charts and routines return as the result... assuming your format is DD.MM.YYYY...

Date1 := 01.01.2000
Date2 := 01.01.2000

should be 0 (zero), right?

then

Date1 := 01.01.2000
Date2 := 02.01.2000

should be 1 (one), right?

in this case, what i (and bart, too) wrote, we're not counting the starting day but we are counting the ending day... this rule stays in effect throughout the entire process... my head still aches from rummaging about doing this... it was good exercise and one i remember being given on a test many years back to determine one's coding level... at that time, the code was being done in dBase II/III/IV ;)

i will have to dig deeper and see what is crossing things up for count from 29.02.2000 to 28.02.2001... i see bart has posted a fix which i have not yet had a chance to compare with my code or run thru the tests i included in my posting...

the real question is this:

what do we count? the starting day, the ending day, both days or neither day?

then we have another question:

  is dayM in monthY a one month difference to dayM in monthX and
  monthZ? monthX, monthY, monthZ are any three consecutive months
  in linear order within one year or crossing two years

once the rules are chosen, then we have something to work with...


I'm just a hobbyist, never went to university to study computer science.

We don't need to invent the wheel again, because others have solutions for that!

Perhaps its solved in " The Art of/Computer Programming/" from Donald E. Knuth?

I don't have such books and i don't know if i'd have the chance to understand such a book?!!

Yesterday i was running windows on this PC and tried MS Visual Studio 2008 Help. That showed me ( -> DateDiff ) a Tutorial from a MS-India guy that delivered code to calculate DateDiff.

I'm now running Linux but perhaps i reboot later to look again?

Bart delivered code that calculates 29.02.2000 to 28.02.2001 = 1 Year.
And that looks reasonable to me!

Bart wrote:
I would actually say that in this particular case the diff is 1 Year...
(11 M + (28 days in feb in a non-leapyear = 1M) = 12M = 1 Y.

Bart

Soon we'll have working DateDiff function and my question will be answered in the end!
Thanks guys!!


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to