StartprogrammingusingObjectPascal:DateTimeComparison

From 흡혈양파의 번역工房
Revision as of 10:05, 26 July 2012 by Onionmixer (talk | contribs) (SPOP 날짜/시간비교하기 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

날짜/시간 비교하기

실수를 비교하는 것과 마찬가지로 두개의 날짜/시간 변수를 비교할 수 있습니다. 예를 들어 실수에서 9.3은 5.1보다 크며 TDateTime 값에 대해서도 마찬가지 입니다. 내일을 나타내는 Now + 1은 오늘(Now) 보다는 크며, 한 시간 이후를 나타내는 Now + 1/24도 역시 지금으로부터 두 시간 전을 나타내는 Now-2/24 보다 큽니다.

다음 예제에서 2012년 1월 1일 날짜를 변수에 넣고, 현재 날짜와 비교하여 이 날짜가 지났는지 아직 안 지났는지를 확인하겠습니다.

var
    Year2012: TDateTime;
begin
    Year2012:= EncodeDate(2012, 1, 1);
    if Now < Year2012 then
        Writeln('Year 2012 is not coming yet')
    else
        Writeln('Year 2012 is already passed');
    Write('Press enter key to close');
    Readln;
end.

이 예제에 해당 날짜로부터 얼마나 남았는지/지났는지 표시하는 새로운 함수를 넣을 수 있습니다.

var
    Year2012: TDateTime;
    Diff: Double;
begin
    Year2012:= EncodeDate(2012, 1, 1);
    Diff:= Abs(Now  Year2012);

    if Now < Year2012 then
    Writeln('Year 2012 is not coming yet, there are ',
        Format('%0.2f', [Diff]), ' days Remaining ')
    else
    Writeln('First day of January 2012 is passed by ',
        Format('%0.2f', [Diff]), ' Days');
    Write('Press enter key to close');
    Readln;
end.

Diff는 현재 날짜와 2012년 날짜 사이의 차이를 가질 실수 변수입니다. 숫자의 절대 값(음의 부호가 없는 숫자)을 되돌려주는 Abs 함수도 사용하였습니다.