날짜 및 시간
MFC는 날짜 및 시간을 사용하는 여러 가지 방법을 지원합니다.
Automation
DATE
데이터 형식에 대한 지원.DATE
는 날짜, 시간 및 날짜/시간 값을 지원합니다. 및COleDateTimeSpan
클래스는COleDateTime
이 기능을 캡슐화합니다. 자동화 지원을 사용하여 클래스와COleVariant
함께 작동합니다.범용 시간 클래스입니다. 및
CTimeSpan
클래스는CTime
ANSI 표준 시간 라이브러리와 연결된 대부분의 기능을 캡슐화합니다time.h
.시스템 클록 지원. MFC 버전 3.0에서는 Win32
SYSTEMTIME
및FILETIME
데이터 형식에CTime
대한 지원이 추가되었습니다.
날짜 및 시간: 자동화 지원
이 클래스는 COleDateTime
날짜 및 시간 정보를 나타내는 방법을 제공합니다. 클래스보다 CTime
더 세분성 및 더 큰 범위를 제공합니다. 클래스는 COleDateTimeSpan
두 COleDateTime
개체 간의 차이와 같은 경과된 시간을 나타냅니다.
및 COleDateTimeSpan
클래스는 COleDateTime
클래스와 함께 COleVariant
사용하도록 설계되었습니다. COleDateTime
COleDateTimeSpan
MFC 데이터베이스 프로그래밍에도 유용하지만 날짜 및 시간 값을 조작할 때마다 사용할 수 있습니다. 클래스는 COleDateTime
클래스보다 CTime
값 범위가 크고 세분성이 더 크지만 개체 CTime
당 스토리지가 더 많이 필요합니다. 기본 DATE 형식으로 작업할 때는 몇 가지 특별한 고려 사항도 있습니다. 구현DATE
에 대한 자세한 내용은 형식 DATE
을 참조하세요.
COleDateTime
개체를 사용하여 100년 1월 1일과 9999년 12월 31일 사이의 날짜를 나타낼 수 있습니다. COleDateTime
개체는 대략적인 해상도가 1밀리초인 부동 소수점 값입니다. COleDateTime
는 아래의 DATE
MFC 설명서 COleDateTime::operator DATE
에 정의된 데이터 형식을 기반으로 합니다. 실제 구현 DATE
은 이러한 범위를 초과합니다. 구현은 COleDateTime
클래스를 더 쉽게 작업할 수 있도록 이러한 범위를 적용합니다.
COleDateTime
은 줄리안 날짜를 지원하지 않습니다. 그레고리오력은 100년 1월 1일로 다시 연장되는 것으로 간주됩니다.
COleDateTime
는 DST(일광 절약 시간)를 무시합니다. 다음 코드 예제에서는 DST 전환 날짜를 초과하는 시간 범위를 계산하는 두 가지 방법을 비교합니다. 하나는 CRT를 사용하고 다른 하나는 를 사용합니다 COleDateTime
.
첫 번째 메서드는 표준 C 형식 구조 tm
체를 사용하여 두 CTime
개체 time1
를 time2
각각 4월 5일과 time_t
4월 6일로 설정합니다. 코드가 time1
표시되고 time2
그 사이의 시간 범위가 표시됩니다.
두 번째 메서드는 두 개의 COleDateTime
개체를 oletime2
oletime1
만들고, 동일한 날짜 time1
및 time2
로 설정합니다. 표시되고 oletime2
그 사이의 시간 범위가 표시됩니다oletime1
.
CRT는 23시간의 차이를 올바르게 계산합니다. COleDateTimeSpan
는 24시간의 차이를 계산합니다.
void CDTDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
time_t date1_t, date2_t;
tm date_tm;
date_tm.tm_hour = 12;
date_tm.tm_min = 0;
date_tm.tm_mon = 3;
date_tm.tm_sec = 0;
date_tm.tm_wday = 0; //Day of week (0-6; Sunday = 0)
date_tm.tm_yday = 0;
date_tm.tm_year = 97;
date_tm.tm_isdst = -1; //Positive if Daylight Saving Time is in effect;
//0 if Daylight Saving Time is not in effect;
//Negative if status of DST is unknown.
date_tm.tm_mday = 6;
date2_t = mktime(&date_tm);
date_tm.tm_mday = 5;
date_tm.tm_isdst = 0;
date1_t = mktime(&date_tm);
CTime time1(date1_t), time2(date2_t);
CTimeSpan ts = time2 - time1;
dc.TextOut(0, 0, CString(_T("CTime")));
dc.TextOut(0, 20, time1.Format(_T("%H:%M:%S %A, %B %d, %Y")));
dc.TextOut(0, 40, time2.Format(_T("%H:%M:%S %A, %B %d, %Y")));
dc.TextOut(0, 60, ts.Format(_T("%H:%M:%S and %D days")));
COleDateTime oletime1(date1_t), oletime2(date2_t);
COleDateTimeSpan olets = oletime2 - oletime1;
dc.TextOut(0, 120, CString(_T("COleDateTime")));
dc.TextOut(0, 140, oletime1.Format(_T("%H:%M:%S %A, %B %d, %Y")));
dc.TextOut(0, 160, oletime2.Format(_T("%H:%M:%S %A, %B %d, %Y")));
//Work-around bug in COleDateTime::Format("%D")
CString str;
str.Format(_T("%s and %d days"), (LPCTSTR)olets.Format(_T("%H:%M:%S")),
olets.GetDays());
dc.TextOut(0, 180, str);
}
현재 시간을 가져옵니다.
다음 절차에서는 개체를 COleDateTime
만들고 현재 시간으로 초기화하는 방법을 보여줍니다.
현재 시간을 얻으려면
COleDateTime
개체를 만듭니다.GetCurrentTime
을 호출합니다.COleDateTime timeNow; timeNow = COleDateTime::GetCurrentTime();
경과 시간 계산
이 절차에서는 두 COleDateTime
개체의 차이를 계산하고 결과를 가져오는 COleDateTimeSpan
방법을 보여줍니다.
경과 시간을 계산하려면
두 개체
COleDateTime
를 만듭니다.개체 중
COleDateTime
하나를 현재 시간으로 설정합니다.시간이 많이 걸리는 작업을 수행합니다.
다른
COleDateTime
개체를 현재 시간으로 설정합니다.두 번 사이의 차이를 가져 가라.
COleDateTime timeStart, timeEnd; timeStart = COleDateTime::GetCurrentTime(); // ... perform time-consuming task timeEnd = COleDateTime::GetCurrentTime(); COleDateTimeSpan spanElapsed = timeEnd - timeStart;
시간 서식 지정
시간 서식을 지정하려면
멤버 함수를 Format
COleDateTime
사용하거나 시간 또는 COleDateTimeSpan
경과 시간을 나타내는 문자 문자열을 만듭니다.
COleDateTime time(1970, 12, 18, 17, 30, 0);
// 18 December 1970, 5:30 PM
CString s = time.Format(VAR_DATEVALUEONLY);
// s contains the date formatted based on
// the current national language specifications
// (locale ID). The time portion is ignored for
// formatting purposes in this case.
자세한 내용은 COleVariant
클래스를 참조하세요.
날짜 및 시간: 데이터베이스 지원
버전 4.0부터 MFC 데이터베이스 프로그래밍은 날짜 및 시간 데이터를 나타내기 위해 클래스 COleDateTimeSpan
와 클래스를 사용합니다COleDateTime
. Automation에도 사용되는 이러한 클래스는 클래스 COleVariant
에서 파생됩니다. 날짜 및 시간 데이터를 CTime
CTimeSpan
관리하는 데 더 나은 지원을 제공합니다.
날짜 및 시간: SYSTEMTIME
지원
COleDateTime
클래스에는 Win32의 시스템 및 파일 시간을 허용하는 생성자가 있습니다.
Win32 FILETIME
구조체는 시간을 64비트 값으로 나타냅니다. 구조체보다 SYSTEMTIME
내부 스토리지에 더 편리한 형식이며 Win32에서 파일 생성 시간을 나타내는 데 사용하는 형식입니다. 구조에 대한 자세한 내용은 을 SYSTEMTIME
참조하세요 SYSTEMTIME
. 구조에 대한 자세한 내용은 을 FILETIME
참조하세요 FILETIME
.