CString t;
CMonthCalCtrl *mCtrl=(CMonthCalCtrl*)GetDlgItem(IDC_MONTHCALENDAR1);
mCtrl->GetCurSel(a);
CTime b(2011,7,2,0,0,0);
CTime c(2008,1,1,0,0,0);
CTime time =a-(b-c);
t = time.Format("%Y 年%m月%d日");
AfxMessageBox(t);
對的啊
CTime operator +( CTimeSpan timeSpan ) const;
CTime operator -( CTimeSpan timeSpan ) const;
CTimeSpan operator -( CTime time ) const;
b和c都是CTime,所以它調用第三個-(CTimeSpan operator -( CTime time ) const;),所以它的返回值是CTimeSpan
a是CTime,第二個參數是CTimeSpan,所以調用第二個-(CTime operator -( CTimeSpan timeSpan ) const;)
b和c的時間差大約是兩年多,妳選擇的時間減它,當然少了兩了兩年多
這是壹個Bug
void CDlgDlg::OnButton1()
{
// CTime a;
CString t;
CMonthCalCtrl *mCtrl=(CMonthCalCtrl*)GetDlgItem(IDC_MONTHCALENDAR1);
// mCtrl->GetCurSel(a);
SYSTEMTIME sysTime;
::SendMessage(mCtrl->GetSafeHwnd(), MCM_GETCURSEL, NULL, (LPARAM)&sysTime);
// CTime time =a-(b-c);
t.Format("%d 年%d月%d日",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
AfxMessageBox(t);
}