//结束定时器
void SetMatchTimer(WORD wHour,WORD wMinute,WORD wSeconds)
{
//变量定义
SYSTEMTIME stTimeCur;
//开始时间
SYSTEMTIME stStartTimer;
//获取当前时间
GetLocalTime(&stTimeCur);
GetLocalTime(&stStartTimer);
//填充数据
stStartTimer.wHour = wHour;
stStartTimer.wMinute = wMinute;
stStartTimer.wSecond = wSeconds;
//当前时间标记
COleDateTime dTimeCur(time(NULL));
//开始时间标记
COleDateTime dTimeStrart(stStartTimer);
//时间差计算
COleDateTimeSpan dTimeSpan = dTimeStrart - dTimeCur;
//相关秒数值
int nBeOverSeconSpan = dTimeSpan.GetTotalSeconds();
//时间已过期 计算次日时间(次日开始秒数=当前时间+天秒数-过期秒数)
if(nBeOverSeconSpan < 0)
{
//目标时间过期
}
else
{
//设置定时器
//nBeOverSeconSpan //定时器时长
}
void SetMatchTimer(WORD wHour,WORD wMinute,WORD wSeconds)
{
//变量定义
SYSTEMTIME stTimeCur;
//开始时间
SYSTEMTIME stStartTimer;
//获取当前时间
GetLocalTime(&stTimeCur);
GetLocalTime(&stStartTimer);
//填充数据
stStartTimer.wHour = wHour;
stStartTimer.wMinute = wMinute;
stStartTimer.wSecond = wSeconds;
//当前时间标记
COleDateTime dTimeCur(time(NULL));
//开始时间标记
COleDateTime dTimeStrart(stStartTimer);
//时间差计算
COleDateTimeSpan dTimeSpan = dTimeStrart - dTimeCur;
//相关秒数值
int nBeOverSeconSpan = dTimeSpan.GetTotalSeconds();
//时间已过期 计算次日时间(次日开始秒数=当前时间+天秒数-过期秒数)
if(nBeOverSeconSpan < 0)
{
//目标时间过期
}
else
{
//设置定时器
//nBeOverSeconSpan //定时器时长
}
}
很多比赛需要在定时开赛,使用上面的方法基本无时间误差.