DaysBetween
DaysBetween returns the number of days between two specified TDateTime values.
Fractional or part days are not counted, so the function will return a whole integer value only.
For example, DaysBetween reports the difference between 1st February 11:59 PM and 2nd February 11:58 PM as zero (0) days between because the day stops a second short of an entire day.
The ordering of the two dates doesn't matter - the number of months will not be negative.
Declaration: Function DaysBetween(const ANow: TDateTime; const AThen: TDateTime): Integer;
Examples follow.
procedure OnMapEvent(var Value:Variant);var vYear, vDate, vTween, vTween2 : TDateTime; vStrYear, vStrDate : string; vBetwix : integer;begin //Result is 4 whole days vBetwix := DaysBetween(Date, Date+4); LogInfo(IntToStr(vBetwix)); LogInfo(''); //Result is 2 whole days vStrDate := '01-10-2023'; vStrYear := '03-10-2023'; vDate := StringToDateTime('dd/mm/yyyy',vStrDate); vYear := StringToDateTime('dd/mm/yyyy',vStrYear); vBetwix := DaysBetween(vDate, vYear); LogInfo(IntToStr(vBetwix)); LogInfo(''); //Result is 0 whole days - 1 second short of a day vTween := EncodeDateTime(2023, 10, 01, 23, 59, 59, 999); vTween2 := EncodeDateTime(2023, 10, 02, 23, 58, 59, 999); LogInfo(FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', vTween)); LogInfo(FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', vTween2)); vBetwix := DaysBetween(vTween, vTween2); LogInfo(IntToStr(vBetwix)); LogInfo(''); //Result is 1 whole day - seconds match vTween := EncodeDateTime(2023, 10, 01, 23, 59, 59, 999); vTween2 := EncodeDateTime(2023, 10, 02, 23, 59, 59, 999); LogInfo(FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', vTween)); LogInfo(FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', vTween2)); vBetwix := DaysBetween(vTween, vTween2); LogInfo(IntToStr(vBetwix)); LogInfo('');end;