控件变量:CDateTimeCtrl m_BeginTime,CDateTimeCtrl m_EndTime;
m_BeginTime.SetFormat("yyyy-MM-dd HH:mm:ss");
m_EndTime.SetFormat("yyyy-MM-dd HH:mm:ss");
//从CDateTimeCtrl、CTime、COleDateTime得到字符串时间
第一种:CDateTimeCtrl转CTime转CString
CTime ctBeginTime,ctEndTime;
m_BeginTime.GetTime(ctBeginTime);
strBeginTime = ctBeginTime.Format("%Y-%m-%d %H:%M:%S");
第二种:COleDateTime转CString
COleDateTime ole_begintime;
strBeginTime = ole_begintime.Format("%Y-%m-%d %H:%M:%S";
CTimeSpan ts = ctEndTime - ctBeginTime;
int nTotalSec = ts.GetTotalSeconds(); //秒数
//得到当前时间
这里需要注意的是,GetLocalTime得到的是本地时区的时间,而GetSystemTime是得到UTC时间。
第一种:COleDateTime
COleDateTime ole_begintime = COleDateTime::GetCurrentTime();
第二种:SYSTEMTIME
SYSTEMTIME CurrentTime;
GetLocalTime(&CurrentTime);
//设置当前时间
第一种:m_BeginTime.SetTime(CurrentTime);
第二种:m_BeginTime.SetTime(ole_begintime);
//当前时间赋给CTime
CTime timeT(
(int)CurrentTime.wYear, (int)CurrentTime.wMonth, (int)CurrentTime.wDay,
(int)CurrentTime.wHour, (int)CurrentTime.wMinute, (int)CurrentTime.wSecond
)
//根据字符串时间,设置时间控件的时间:
仅一种:CString转COleDateTime转CDateTimeCtrl
CString strBeginTime,strEndTime;
COleDateTime ole_time;
ole_time.ParseDateTime(strBeginTime);
m_BeginTime.SetTime(ole_time);
//COleDateTime与CTime互相转化
COleDateTime->CTime
SYSTEMTIME sys_time;
ole_time.GetAsSystemtime(sys_time);
c_time = CTime(sys_time);
CTime->COleDateTime
SYSTEMTIME sys_time;
c_time.GetAsSystemTime(sys_time);
ole_time = COleDateTime(sys_time);
//在指定时间的基础上,加上或者减去一段时间后,得到新的日期时间
MFC:
CTime ctBeginTime;
COleDateTime ole_begintime;
SYSTEMTIME sys_begintime;
m_BeginTime.GetTime(ctBeginTime);
ctBeginTime.GetAsSystemTime(sys_begintime);
ole_begintime = COleDateTime(sys_begintime);
COleDateTimeSpan span;
span.SetDateTimeSpan(m_nDay,m_nHour,m_nMinute,m_nSecond);
ole_begintime+=span;
strEndTime = ole_begintime.Format("%Y-%m-%d %H:%M:%S";
//根据给定的日期,得到该日期的星期数,再得到该星期开始和结束的日期
COleDateTime t1, tWeekBegin, tWeekEnd;
t1.SetDate(2006,8,8);
//这里需要注意的是西方人的习惯和我们不一样,他们把星期天当作每个星期的第一天,如下面的函数GetDayOfWeek就是如此,所以我做了下面的一些转换
int nXingQi = t1.GetDayOfWeek();
COleDateTimeSpan tsWeekBegin, tsWeekEnd;
if ( 1 == nXingQi
{
tsWeekBegin.SetDateTimeSpan(6, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(0, 0, 0, 0);
}
else
{
tsWeekBegin.SetDateTimeSpan(nXingQi-2, 0, 0, 0);
tsWeekEnd.SetDateTimeSpan(8-nXingQi, 0, 0, 0);
}
tWeekBegin = t1 - tsWeekBegin;
tWeekEnd = t1 + tsWeekEnd;
CString str1 = tWeekBegin.Format("%Y-%m-%d";
CString str2 = tWeekEnd.Format("%Y-%m-%d";