블로그는 나의 힘!
[ Programing ]/C++2020. 12. 23. 10:52

#include <ATLComTime.h>


// 현재 시간

DATE dtDate = COleDateTime::GetCurrentTime();

// 시간 구하기
COleDateTime tNowTime( dtDate );

int nNowYear = tNowTime.GetYear();            // 2021
int nNowMonth = tNowTime.GetMonth();        // 1
int nNowDay = tNowTime.GetDay();              // 22
int nNowHour = tNowTime.GetHour();            // 9
int nNowMinute = tNowTime.GetMinute();      // 0
int nNowSecond = tNowTime.GetSecond();     // 0
int nNowWeek = tNowTime.GetDayOfWeek()  // 6(금)     1 = 일요일   : 1~7

COleDateTime tCustomNow( nNowYear, nNowMonth, nNowDay, 0, 0, 0 );
// DATE 로 셋팅
DATE dtCustomTime = tCustomNow;    
// time_t(long) 로 셋팅
time_t tCustomTime = tCustomNow;    
// int64 로 셋팅
__time64_t nCustomTime = tCustomNow;    
// SYSTEMTIME 로 셋팅
SYSTEMTIME sysCustomTime = tCustomNow;    
// FILEMTIME 로 셋팅
FILETIME fileCustomTime = tCustomNow;    



////////////////////////////////////////////////////////////////////

COleDateTime tCDTime( COleDateTime::GetCurrentTime() );

// 년월일(YYYYMMDD) 만 추출한것 -> Time 세팅.
// 2020-12-23 10:43:00 -> 20201223

COleDateTime tNowYMD( tCDTime.GetYear(), tCDTime.GetMonth(), tCDTime.GetDay(), 0, 0, 0 );
COleDateTimeSpan tAddTime( 30, 9, 0, 0 );    // 30일 9시간 세팅.

// 시간 임의 추가 계산
// 2020-12-23 00:00:00 + 0000-00-30 09:00:00 -> 2021-01-22 09:00:00 (금:6)
DATE dtNowEndDate = tNowYMD + tAddTime;

// int 년 월 일 시 분 초 추출
COleDateTime tBundle( dtNowEndDate );
int nBundleYear = tBundle.GetYear();            // 2021
int nBundleMonth = tBundle.GetMonth();        // 1
int nBundleDay = tBundle.GetDay();              // 22
int nBundleHour = tBundle.GetHour();            // 9
int nBundleMinute = tBundle.GetMinute();      // 0
int nBundleSecond = tBundle.GetSecond();     // 0
int nBundleWeek = tBundle.GetDayOfWeek()  // 6(금)     1 = 일요일   : 1~7

// COleDateTime Time 값 변환
COleDateTime cdt( nBundleYear, nBundleMonth, nBundleDay, nBundleHour, nBundleMinute, 0 );
DATE dtTime = cdt;    // DATE 로 셋팅
time_t tTime = cdt;    // time_t(long) 로 셋팅
__time64_t nTime = cdt;    // int64 로 셋팅
SYSTEMTIME sysTime = cdt;    // SYSTEMTIME 로 셋팅
FILETIME fileTime = cdt;    // FILEMTIME 로 셋팅


// 보너스 추가.
// 시간 차이 - 남은 시간 계산
DATE dtNowTime = tNowTime;
DATE dtCustomTime = tCustomNow;
COleDateTimeSpan sp( dtNowTime - dtCustomTime );
int nTotalMinutes = (int)sp.GetTotalMinutes();    // 분
int nTotalSecond = (int)sp.GetTotalSeconds();    // 초
 
 


 

출처 : COleDateTime 클래스 | Microsoft Docs 

 

COleDateTime 클래스

OLE 자동화에 사용되는 'DATE' 데이터 형식을 캡슐화하는 MFC COleDateTime 클래스에 대한 API 참조입니다.

docs.microsoft.com

 

'[ Programing ] > C++' 카테고리의 다른 글

C++ int YYYMMDD -> DATE로 설정하기.  (0) 2020.12.23
C++ int YYYMMDDHH -> DATE로 설정하기.  (0) 2020.12.23
SRand() 사이즈. 최대 범위.  (0) 2020.10.12
C++ Type Traits  (0) 2020.09.09
C++ union  (0) 2020.06.05
Posted by Mister_Q