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
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)