델파이 날짜/시간 함수 종류 및 예시
델파이에서 날짜와 시간을 다루는 함수들은 주로 두 개의 유닛에 나뉘어 있습니다. 날짜/시간 값은 기본적으로 TDateTime
타입(실수형)으로 저장됩니다.
아래에서 각 유닛별 주요 함수와 예시를 확인해 보세요.
1. SysUtils 유닛 (기본 날짜/시간 처리)
이 유닛에는 현재 날짜/시간을 가져오거나, 문자열과 TDateTime
값을 서로 변환하고, 날짜/시간 값을 구성하거나 분해하는 등의 기본적인 함수들이 포함되어 있습니다.
uses SysUtils;
Now
함수
기능: 현재 시스템의 날짜와 시간을 TDateTime
값으로 반환합니다.
var
CurrentDateTime: TDateTime;
begin
CurrentDateTime := Now;
ShowMessage('현재 날짜 및 시간: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', CurrentDateTime));
end;
Date
함수
기능: 현재 시스템의 날짜만 TDateTime
값으로 반환합니다. 시간 부분은 0입니다.
var
TodayDate: TDateTime;
begin
TodayDate := Date;
ShowMessage('오늘 날짜: ' + FormatDateTime('yyyy/mm/dd', TodayDate));
end;
Time
함수
기능: 현재 시스템의 시간만 TDateTime
값으로 반환합니다. 날짜 부분은 0입니다.
var
CurrentTime: TDateTime;
begin
CurrentTime := Time;
ShowMessage('현재 시간: ' + FormatDateTime('hh:nn:ss', CurrentTime));
end;
StrToDate
함수
기능: 날짜 형식 문자열을 TDateTime
으로 변환합니다. 시스템 설정을 따르며, 실패 시 예외 발생.
var
InputDateStr: string;
ParsedDate: TDateTime;
begin
InputDateStr := '2023-10-26';
try
ParsedDate := StrToDate(InputDateStr);
ShowMessage('변환된 날짜: ' + FormatDateTime('yyyy년 mm월 dd일', ParsedDate));
except
on EConvertError do ShowMessage('잘못된 날짜 형식입니다.');
end;
end;
DateToStr
함수
기능: TDateTime
날짜 값을 시스템의 기본 짧은 날짜 형식 문자열로 변환합니다.
var
SomeDate: TDateTime;
DateString: string;
begin
SomeDate := EncodeDate(2024, 1, 1); // 2024년 1월 1일
DateString := DateToStr(SomeDate);
ShowMessage('DateToStr 결과: ' + DateString); // 예: 2024-01-01 (시스템 설정 따름)
end;
StrToDateTime
함수
기능: 날짜 및 시간 형식 문자열을 TDateTime
으로 변환합니다. 시스템 설정을 따르며, 실패 시 예외 발생.
var
InputDateTimeStr: string;
ParsedDateTime: TDateTime;
begin
InputDateTimeStr := '2023-10-26 15:30:00';
try
ParsedDateTime := StrToDateTime(InputDateTimeStr);
ShowMessage('변환된 날짜 및 시간: ' + FormatDateTime('yyyy/mm/dd tt hh:nn:ss', ParsedDateTime));
except
on EConvertError do ShowMessage('잘못된 날짜/시간 형식입니다.');
end;
end;
DateTimeToStr
함수
기능: TDateTime
값을 시스템의 기본 날짜 및 시간 형식 문자열로 변환합니다.
var
SomeDateTime: TDateTime;
DateTimeString: string;
begin
SomeDateTime := Now;
DateTimeString := DateTimeToStr(SomeDateTime);
ShowMessage('DateTimeToStr 결과: ' + DateTimeString); // 예: 2023-10-26 오후 3:30:15 (시스템 설정 따름)
end;
EncodeDate
함수
기능: 연도, 월, 일을 받아 TDateTime
날짜 값을 만듭니다.
var
SpecificDate: TDateTime;
begin
SpecificDate := EncodeDate(2025, 4, 21); // 2025년 4월 21일
ShowMessage('지정된 날짜: ' + FormatDateTime('yyyy-mm-dd', SpecificDate));
end;
DecodeDate
프로시저
기능: TDateTime
값에서 연도, 월, 일을 추출합니다.
var
SomeDate: TDateTime;
Year, Month, Day: Word;
begin
SomeDate := Now;
DecodeDate(SomeDate, Year, Month, Day);
ShowMessage(Format('오늘은 %d년 %d월 %d일 입니다.', [Year, Month, Day]));
end;
EncodeTime
함수
기능: 시, 분, 초, 밀리초를 받아 TDateTime
시간 값을 만듭니다.
var
SpecificTime: TDateTime;
begin
SpecificTime := EncodeTime(10, 30, 0, 500); // 10시 30분 0초 500밀리초
ShowMessage('지정된 시간: ' + FormatDateTime('hh:nn:ss.zzz', SpecificTime));
end;
DecodeTime
프로시저
기능: TDateTime
값에서 시, 분, 초, 밀리초를 추출합니다.
var
SomeTime: TDateTime;
Hour, Min, Sec, MSec: Word;
begin
SomeTime := Now;
DecodeTime(SomeTime, Hour, Min, Sec, MSec);
ShowMessage(Format('현재 시간은 %d시 %d분 %d초 %d밀리초 입니다.', [Hour, Min, Sec, MSec]));
end;
DayOfWeek
함수
기능: TDateTime
값의 요일을 정수(1=일요일 ~ 7=토요일)로 반환합니다.
var
Today: TDateTime;
DayIdx: Integer;
DayNames: array[1..7] of string;
begin
Today := Now;
DayIdx := DayOfWeek(Today);
DayNames[1] := '일요일'; DayNames[2] := '월요일'; DayNames[3] := '화요일';
DayNames[4] := '수요일'; DayNames[5] := '목요일'; DayNames[6] := '금요일';
DayNames[7] := '토요일';
ShowMessage('오늘은 ' + DayNames[DayIdx] + ' 입니다.');
end;
FormatDateTime
함수
기능: TDateTime
값을 지정된 포맷 문자열에 따라 포맷된 문자열로 반환합니다.
var
CurrentDateTime: TDateTime;
FormattedString: string;
begin
CurrentDateTime := Now;
FormattedString := FormatDateTime('yyyy년 mm월 dd일 tt hh시 nn분 ss초', CurrentDateTime);
ShowMessage('포맷된 날짜 및 시간: ' + FormattedString);
end;
2. System.DateUtils 유닛 (날짜/시간 유틸리티)
이 유닛에는 날짜/시간 값을 특정 단위만큼 증감시키거나, 두 날짜/시간 사이의 차이를 계산하거나, 특정 기간(일, 월, 년 등)의 시작 또는 끝 날짜/시간을 구하는 등 좀 더 복잡한 유틸리티 함수들이 포함되어 있습니다.
uses System.DateUtils; // 또는 DateUtils;
IncDay
, IncMonth
, IncYear
등의 함수
기능: TDateTime
값에 지정된 단위(일, 월, 년 등)만큼을 더하거나 빼서 새로운 TDateTime
값을 반환합니다. 음수 값을 사용하여 시간을 거슬러 갈 수 있습니다.
var
Today, Tomorrow, LastMonth: TDateTime;
begin
Today := Date;
Tomorrow := IncDay(Today, 1); // 오늘로부터 1일 후
LastMonth := IncMonth(Today, -1); // 오늘로부터 1개월 전
ShowMessage('내일 날짜: ' + FormatDateTime('yyyy-mm-dd', Tomorrow));
ShowMessage('지난달 오늘: ' + FormatDateTime('yyyy-mm-dd', LastMonth));
end;
DaysBetween
, HoursBetween
등의 함수
기능: 두 TDateTime
값 사이의 지정된 단위(일, 시, 분 등) 차이를 정수로 반환합니다.
var
Date1, Date2: TDateTime;
DaysDiff: Integer;
begin
Date1 := EncodeDate(2023, 10, 26);
Date2 := EncodeDate(2023, 11, 15);
DaysDiff := DaysBetween(Date2, Date1); // Date2 - Date1 의 일수 차이
ShowMessage(Format('%s 부터 %s 까지 %d일 차이납니다.',
[FormatDateTime('yyyy-mm-dd', Date1), FormatDateTime('yyyy-mm-dd', Date2), DaysDiff])); // 결과 예시: 20일 차이
end;
StartOfTheDay
, EndOfTheMonth
등의 함수
기능: 주어진 TDateTime
값이 속한 지정된 기간의 시작 또는 끝에 해당하는 TDateTime
값을 반환합니다.
var
Today, FirstDayOfMonth: TDateTime;
begin
Today := Now;
FirstDayOfMonth := StartOfTheMonth(Today);
ShowMessage('이번 달의 첫째 날: ' + FormatDateTime('yyyy-mm-dd', FirstDayOfMonth));
end;
델파이에서 날짜/시간을 다룰 때는 이러한 함수들을 조합하여 사용하시면 됩니다. 어떤 기능을 사용하느냐에 따라 SysUtils
또는 System.DateUtils
유닛을 추가해야 한다는 점을 기억하시면 됩니다.
'코딩 이야기 > 델파이 코딩' 카테고리의 다른 글
델파이 숫자 함수 종류 및 예시 (0) | 2025.04.21 |
---|---|
델파이 문자열 함수 종류 및 예시 (0) | 2025.04.21 |
델파이 문자열 포맷 함수 종류 및 예시 (0) | 2025.04.21 |
델파이 날짜 포맷 종류 및 예시 (0) | 2025.04.21 |
델파이 제어 구조 (0) | 2025.04.15 |