다음을 통해 공유


날짜 및 시간: 자동화 지원

이 문서에서는 날짜 및 시간 관리와 관련 된 클래스 라이브러리 서비스를 활용 하는 방법을 설명 합니다.설명 하는 절차는 다음과 같습니다.

COleDateTime 클래스는 날짜 및 시간 정보를 표시 하는 방법을 제공 합니다.세밀 하 고 보다 넓은 범위에 제공 된 CTime 클래스입니다.COleDateTimeSpan 클래스는 두 경과 시간을 나타내는 COleDateTime 개체입니다.

COleDateTimeCOleDateTimeSpan 클래스에 사용 되도록 설계는 COleVariant 클래스에서 자동화를 사용 합니다.COleDateTimeCOleDateTimeSpan MFC 데이터베이스 프로그래밍에도 유용 하지만 원하는 날짜 및 시간 값을 다룰 때마다 사용할 수 있습니다.하지만 COleDateTime 클래스에 보다 세밀 한 값의 범위는 CTime 클래스에 필요한 개체 보다 더 많은 스토리지 CTime.또한 몇 가지 특별히 고려할 사항은 기본으로 작업 하는 경우 날짜 형식입니다.참조 DATE 형식 구현에 대 한 자세한 내용은 날짜.

COleDateTime개체는 9999 100 년 1 월 1 일 및 12 월 31 일 사이의 날짜를 나타내는 데 사용할 수 있습니다.COleDateTime개체 부동 소수점 값은 대략적인 해상도 1 밀리초의.COleDateTime기반이 되는 날짜 MFC 설명서에서 정의 하는 데이터 형식 COleDateTime::operator 날짜.실제 구현의 날짜 이러한 경계를 벗어나 확장 합니다.COleDateTime 구현 클래스가 작업을 용이 하 게 이러한 경계를 적용 합니다.

COleDateTime율리우스 날짜를 지원 하지 않습니다.그레고리오 력 100 년 1 월 1 일 날짜로 확장으로 간주 됩니다.

COleDateTime일광 절약 시간제 (DST)를 무시합니다.다음 코드 예제에서는 DST 전환 날짜는 기간 계산의 두 가지 방법을 비교: 하나는 CRT를 사용 하 고 다른 using COleDateTime.DST를 통해 세 번째 10 월에서 및 4 월에서 둘째 주에 전환합니다.

설정 하는 첫 번째 방법은 두 CTime 개체 time1time2와, 4 월 5-6 월에 각각 표준 C 형식 구조를 사용 하 여 tmtime_t.코드 표시 time1time2와 및 이들 사이의 기간.

두 번째 메서드를 만듭니다 COleDateTime 개체 oletime1 및 oletime2,이 같은 날짜로 설정 하 고 time1time2와.표시 oletime1 및 oletime2 및 이들 사이의 기간.

CRT 제대로 23 시간 차이 계산합니다.COleDateTimeSpan24 시간의 차이 계산합니다.

해결 방법을 제대로 사용 하 여 날짜를 표시 하려면 사용 예제 끝날 무렵 COleDateTime::Format.기술 자료 문서 "버그: Format("%D") 실패에 대 한 COleDateTimeCOleDateTimeSpan" (Q167338).

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);
}

참고 항목

개념

날짜 및 시간