往MFC界面上拖一个Date Time Picker控件,然后选中,右键添加一个变量 比如 m_dtCtrl
1、获得该控件的时间
CTime m_date; //别看名字以为它只有时间,实际上它可以同时获得日期和时间信息
m_dtCtrl.GetTime(m_date);//把控件里面的时间都获取到了m_date这个结构里面。需要哪些数据从m_date中取就可以了。
不过CTime只能表示1970-2037年的数据,要表示更长时间段,可以用COleDateTime,表示1900以后几千年的数据。
2、获取当前时间
方法一:
CTime time ;
time = CTime::GetCurrentTime();//是一个静态方法,静态方法可以直接类名::方法名调用。
将上述控件设置为当前时间:
m_dtCtrl.SetTime(time);
日期格式化:
CString strDate = time.Format(L"%Y-%m-%d"); //获取到的为日期 如:2010-03-05
方法二:
COleDateTime dateTest;
dateTest = COleDateTime::GetCurrentTime(); //是一个静态方法,静态方法可以直接类名::方法名调用。
将上述控件设置为当前时间:
m_dtCtrl.SetTime(dateTest);
日期格式化同上。
4.如果有不需要显示日期的需求,可以在该控件属性窗口中,设置ShowNone为TRUE.
当不想显示日期的时候就写
m_dtCtrl.SetTime();
就可以达到目的了。
5.如果想查看当前控件checkbox情况,可以
m_dtCtrl.GetStatus()==0
的时候是选中的,其他的是不选中和错误的情况
error = -1 ,valid = 0,invalid = 1, // Invalid date (out of range, etc.)null = 2, // Literally has no value
enum DateTimeStatus
{
error = -1,
valid = 0,
invalid = 1, // Invalid date (out of range, etc.)
null = 2, // Literally has no value
};
初始化控件:
CString m_strBirth = L"2015-04-18";
//解析生日字符串 然后初始化控件
int iIndex = m_strBirth.Find('-');
int iReverseIndex = m_strBirth.ReverseFind('-');
CString strYear = m_strBirth.Left(iIndex);
CString strDay = m_strBirth.Right(m_strBirth.GetLength() - iReverseIndex -1);
CString strMonth = m_strBirth.Mid(iIndex+1,(iReverseIndex-iIndex-1));
COleDateTime time(_ttoi(strYear),_ttoi(strMonth),_ttoi(strDay),0,0,0);
m_DateCtrl.SetTime(time);// CDateTimeCtrl m_DateCtrl;