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

 
 
출처 : 홍환민님.

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
너의 하루하루가 너를 형성한다. 그리고 머지 않아 한 가정을, 지붕 밑의 온도를 형성할 것이다. 또한 그 온도는 이웃으로 번져 한 사회를 이루게 될 것이다. 이렇게 볼 때 너의 ‘있음’은 절대적인 것이다. 없어도 그만인 존재가 아니라는 말이다. (법정스님)