Ja, de MilliSecondOfTheYear() vergelijken om dat een jaar eraf te halen is eigenlijk ook niet goed. Want dan zou 1 april van het ene jaar best eens na 31 maart van het andere jaar kunnen vallen (als die van 31 maart een schrikkeljaar is).
Beter is dus:
Delphi Code:
DiffYear := YearOf(Date2) - YearOf(Date1);
if MilliSecondOfTheYear(Date1 - IfThen(IsInLeapYear(Date1) and (DayOfTheYear(Date1) > 31 + 28), 1, 0)) >
MilliSecondOfTheYear(Date2 - IfThen(IsInLeapYear(Date2) and (DayOfTheYear(Date2) > 31 + 28), 1, 0)) then Dec(DiffYear);
Dit corrigeert een datum na 29 februari met 1 dag (dus alleen in leapyear) weer terug naar een 'normaal jaar'.
Bookmarks