MFC防止按钮动作的连击响应,用CTime

来源:岁月联盟 编辑:exp 时间:2012-02-07
涉及到CTime 的比较大小时。CTimeSpan 隆重登场了。减少了很多麻烦事- -!
CTime 类只能用来获取时间,不能用来进行时间比较,否则会产生负值
例如:
CWnd::OnTimer(nID)
{
CTime Start = CTime::GetCurrentTime();   (注:不要用GetCurrentTime,而用CTime::GetCurrentTime,前者计算得到的可能为格林尼治时间)
......
   CTime Now = CTim::GetCurrentTime();
   if(Now.GetSecond() - Start.GetSecond() >=10)
   {
     MessageBox("时间过了10秒!");
     Start = Now;
   }
}
以上这段代码在经过一分钟后(或 Start.GetMinute() != Now.GetMinute()时),Now.GetSecond() - Start.GetSecond() 的结果是一个负值
如果要进行时间间隔的比较,可以用CTimeSpan类,如下
获得当前日期和时间
CTime tm=CTime::GetCurrentTime();
CString str=tm.Format("%Y-%m-%d");
在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
CTime t = CTime::GetCurrentTime(); //获取系统日期
int d=t.GetDay(); //获得几号
int y=t.GetYear(); //获取年份
int m=t.GetMonth(); //获取当前月份
int h=t.GetHour(); //获取当前为几时
int mm=t.GetMinute(); //获取分钟
int s=t.GetSecond(); //获取秒
int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:
CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔
int iDay=span.GetDays(); //获取这段时间间隔共有多少天
int iHour=span.GetTotalHours(); //获取总共有多少小时
int iMin=span.GetTotalMinutes();//获取总共有多少分钟
int iSec=span.GetTotalSeconds();//获取总共有多少秒
[cpp]

CTime m_dCurrentDate  = CTime::GetCurrentTime(); 
CTimeSpan span = m_dCurrentDate - m_dBeginDate;         //m_dBeginDate 
if (span.GetSeconds() < 2) 

    return; 

m_dBeginDate = CTime::GetCurrentTime(); 


摘自 开心