Delphi > Obecné

Nepresne DateUtils.MinutesBetween

(1/1)

zokzok:
Pouzivam DateUtils.MinutesBerween na zistenie poctu minut medzi dvoma casmi, ale vracia to nepresne udaje (75,75,76,78). Naproti tomu moja vlastna verzia vracia spravne udaje (75,76,77,78). Co s tym? Tesil som sa ze budem moct pouzit standardnu funkciu z dateutils. Ale na co je taka zakladna kniznica ked nevracia spolahlive vysledky, clovek aby sa potom patlat so vsetkym. Inak Delphi7 / win 7 64 bit, neviem ci to ma suvis.


function MyMinutesBetween(const ANow : TDateTime; const AThen : TDateTime) : integer;
begin
  result := round( (ANow - AThen) * 24 * 60 );
end;

... testovaci kod:

  ShowMessageFmt(
    'dateutils.MinutesBetween: %d %d %d %d',[
    MinutesBetween(EncodeDateTime(2009,3,22,8,0,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:00 = 75 minut
    MinutesBetween(EncodeDateTime(2009,3,22,8,1,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:01 = 75 minut
    MinutesBetween(EncodeDateTime(2009,3,22,8,2,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:02 = 76 minut
    MinutesBetween(EncodeDateTime(2009,3,22,8,3,0,0),EncodeDateTime(2009,3,22,6,45,0,0))  // 06:45-08:03 = 78 minut
  ]);

  ShowMessageFmt(
    'moja implementacia: %d %d %d %d',[
    MyMinutesBetween(EncodeDateTime(2009,3,22,8,0,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:00 = 75 minut
    MyMinutesBetween(EncodeDateTime(2009,3,22,8,1,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:01 = 76 minut
    MyMinutesBetween(EncodeDateTime(2009,3,22,8,2,0,0),EncodeDateTime(2009,3,22,6,45,0,0)), // 06:45-08:02 = 77 minut
    MyMinutesBetween(EncodeDateTime(2009,3,22,8,3,0,0),EncodeDateTime(2009,3,22,6,45,0,0))  // 06:45-08:03 = 78 minut
  ]);


< z >:
zda se, ze tento bug je znamy v QC a nejmin do D2010 nebyl odstranen :(
nevim, jak v novejsich, zrejme v XE by to melo byt opravene

pokud pridas k 2. casu 1 milisekundu, tak je to ok,
duvodem chyby je asi Trunc

zokzok:
Co je to QC?

< z >:
QualityCentral od Embarcadero produktu
http://qc.embarcadero.com/wc/qcmain.aspx

hlasi se tam bugy ;)

tj. budes muset pouzivat svoji funkci nebo nejaky workaround,
pod D7 to jinak spravne nebude

Navigace

[0] Seznam témat

Přejít na plnou verzi