Visual Basic, C & C++
Delphi 분류

[DelPhi] 날짜 비교하기

컨텐츠 정보

본문

일반적으로 그냥 TDateTime 형끼리는 기본적은 비교 연산자 (>, <, = 등)로 비교를 할 겁니다.
일반적인 경우에는 크게 문제가 없지만, 몇몇 경우에 잘못된 결과가 나온다고 합니다.
(예를 들어, DateTimePicker 컴포넌트를 이용해서 날짜를 두개를 선택하고, 그 두개를 비교하면 같은 값임에도 한쪽이 크다고
판단되는 경우가 있다고 합니다.)

일반적으로 TDataTime도 Double 형에 불과합니다.

System.pas에 보면 아래와 같이 정의되어 있습니다.
  TDateTime = type Double;

결국 실수형 비교라서 그런 것일까요?

어쨋건, 그래서인지 DateUtils.pas 유닛에 보면 아래와 같이 TDateTime형끼리의 비교를 위한 함수들이 존재합니다.

function CompareDateTime(const A, B: TDateTime): TValueRelationship;
function SameDateTime(const A, B: TDateTime): Boolean;
function CompareDate(const A, B: TDateTime): TValueRelationship;
function SameDate(const A, B: TDateTime): Boolean;
function CompareTime(const A, B: TDateTime): TValueRelationship;
function SameTime(const A, B: TDateTime): Boolean;

또한, DateUtils.pas 유닛을 보면 TDateTime형을 다루기 위한 정말이지 다양한 함수들이 많습니다.
그러니 직접 구현하기 보다는 이 유닛에 있는 함수라면 그냥 사용하는 것이 좋을 것입니다.
(위와 같이 애매한 문제가 생길 수 있으므로...)

 
 
출처 : 홍환민님.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
유쾌한 사람은 자기 일에만 몰두하는 사람이 아니다. 때론 자신의 일을 전부 제쳐놓고 타인의 문제에 전력을 쏟는 열정이 있는 사람이다. 타인에게 자신의 힘을 나누어주고 마음을 열어주는 것은 자신의 삶을 행복하게 만드는 방법이다.