Delphi 분류
[DelPhi] 날짜 비교하기
컨텐츠 정보
- 28,504 조회
- 0 추천
- 목록
본문
일반적으로 그냥 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형을 다루기 위한 정말이지 다양한 함수들이 많습니다.
그러니 직접 구현하기 보다는 이 유닛에 있는 함수라면 그냥 사용하는 것이 좋을 것입니다.
(위와 같이 애매한 문제가 생길 수 있으므로...)
일반적인 경우에는 크게 문제가 없지만, 몇몇 경우에 잘못된 결과가 나온다고 합니다.
(예를 들어, 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
등록된 댓글이 없습니다.