[fpc-pascal] <time_fraction>Between bug?
Marco van de Voort
marcov at stack.nl
Sun May 30 14:18:19 CEST 2010
In our previous episode, Bee Jay said:
> Hi all,
> Try the following code snippet:
> a,b: TDateTime;
> i: integer;
> a := EncodeDateTime(2010, 1, 1, 0, 0, 0, 0);
> for i := 0 to 9 do
> b := EncodeDateTime(2010, 1, 1, 0, 0, i, 0);
> I think the result isn't correct. It also affects other
> <time_fraction>Between functions e.g. SecondsBetween, MinutesBetween,
> But if I changed the milisecond part of a or b or both to anything but 0
> then the result is correct. Is this a bug? Or did I miss something?
IIRC this is normal and delphi compatible and due to TDatetime being a
floating point type.
*between does a trunc, and
"time" is a floating point values, so values might be rounded here and
Sometimes the rounding means that e.g. date+1second is rounded to a bit more
than date + 1second. Then later secondsbetween sees no whole second between
and this results in this behaviour.
More information about the fpc-pascal