안녕하세요.
비주얼 C++, VC++, MFC에서 날짜 차이를 계산하는 로직입니다.
참고하실분 참고 부탁드립니다.
하기 로직에 레지스트리 프로그램이나 파일 처리 프로그램까지 넣으면 만료 기간을 2중 3중으로 체크 가능합니다.
근본적으로는 서버에서 읽어와 라이선스 만료 기간을 체크 하는 것이 좋으나 서버 구축 부담이 있으므로 로컬에서 처리되는 함수를 사용 하면 될 것 같습니다.
감사합니다.
CString Caldata = "2020-10-13 00:00:00.0";
CTime tm = CTime::GetCurrentTime();
int nCurHour = tm.GetHour();
int nCurMin = tm.GetMinute();
int nCurSec = tm.GetSecond();
int nCurYear = tm.GetYear();
int nCurMonth = tm.GetMonth();
int nCurDay = tm.GetDay();
//TRACE("nCurMonth: %d\r\n",nCurMonth);
//TRACE("nCurDay: %d\r\n",nCurDay);
CString comYear = Caldata, comMonth = Caldata, comDay = Caldata, comHour = Caldata, comMin = Caldata, comSec = Caldata;
int nYear, nMonth, nDay, nHour, nMin, nSec;
comYear.Delete(Caldata.GetLength(),4); //년
nYear = _ttoi(comYear);
//TRACE("nYear: %d\r\n",nYear);
comMonth.Delete(0, 5);
comMonth.Delete(Caldata.GetLength()-5,2); //월
nMonth = _ttoi(comMonth);
//TRACE("nMonth: %d\r\n",nMonth);
comDay.Delete(0, 8);
comDay.Delete(Caldata.GetLength() - 8,2); //일
nDay = _ttoi(comDay);
comHour.Delete(0,11);
comHour.Delete(Caldata.GetLength() - 11,2);//시간
nHour = _ttoi(comHour);
comMin.Delete(0, 14);
comMin.Delete(Caldata.GetLength() - 14,2); //분
nMin = _ttoi(comMin);
comSec.Delete(0, 17);
comSec.Delete(Caldata.GetLength() - 17,2); //초
nSec = _ttoi(comSec);
CTime currentTime(nCurYear, nCurMonth, nCurDay, nCurHour, nCurMin, nCurSec);
CTime compareTime(nYear, nMonth, nDay, nHour, nMin, nSec);
CTimeSpan CompareData = currentTime - compareTime; //비교
CString leftDay;
leftDay.Format("%d", CompareData.GetDays());
int nleftDay = _ttoi(leftDay);
TRACE("nleftDay: %d\r\n",nleftDay);
if(nleftDay==0)
{
AfxMessageBox("기간 만료", MB_OK | MB_ICONQUESTION );
GetDlgItem(IDC_BUTTON_setting)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON14)->EnableWindow(FALSE);
}
'하루개발' 카테고리의 다른 글
템플릿 (0) | 2021.09.06 |
---|---|
MFC ListBox 선택한 값 가져오기 (0) | 2021.09.06 |
윈도우 10에서 Visual Studio 6.0 Professional(VC++) 설치 방법 (0) | 2020.09.09 |