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
이것이 바로 나의 생각이다. 하고 제대로 내놓고 말할 수 있는 자기 나름의 생각을 갖는 데는 10년이 걸린다. (A. 카뮈)