Q&A

  • MinutesBetween 함수에 관하여
MinutesBetween 함수를 사용하다 이상한 점을 발견해서 올립니다.
고수 분들의 지도 편달을 부탁드립니다.

<!--CodeS-->
procedure TForm1.Button1Click(Sender: TObject);
var
   stDiff, stStart, stEnd: String;
   tStart, tEnd:TDateTime;
   i: Integer;
begin
   tStart := StrToDateTime(Edit1.Text); // 2006-12-04 오전 9:00:00
   tEnd := StrToDateTime(Edit2.Text);   // 2006-12-04 오전 9:02:00

   i := Minutesbetween(tStart, tEnd);

   Edit3.Text := IntTostr(i);  // 2분 차이임에도 불구하고 1이 나옴

end;

<!--CodeE-->
아무리 봐도 제 눈에는 2분의 차이가 나는데 Edit3 박스 안에는 1이라고 나오는 이유와 해결책 좀 가르쳐 주세요~~~
2  COMMENTS
  • Profile
    최용일 2005.12.02 01:17
    안녕하세요. 최용일입니다.

    아마도 버그인듯하네요...

    원래 시간은 실수의 소수부분을 이용하는데 MinutesBetween에서 소수연산시 발생하는 오차에 대해서 간과한듯...

    2분차이일때 1.9999999999... 를 trunc함수를 써서 1을 리턴하네요...
    2분1초일때는 2를...

    MinutesBetween대신 직접 만들어 쓰시는것이 좋을듯...

    ^^ 항상 즐코하세요...

  • Profile
    양영빈 2005.12.02 18:35
    감사하옵니다~~