VC中进行时间比较

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();//获取总共有多少秒

设置计时器

定义TIMER ID

#define TIMERID_JISUANFANGSHI 2

在适当的地方设置时钟,需要开始其作用的地方;

SetTimer(TIMERID_JISUANFANGSHI,200,NULL);

在不需要的时候销毁掉时钟

KillTimer(TIMERID_JISUANFANGSHI);

消息映射

void CJisuan::OnTimer(UINT nIDEvent)

{}

VC的时间有好多种,仅列出几种:
time函数得到的是1970开始计算的秒是,可以直接按无符号整数比较。
GetTickCount和timeGetTime得到的是系统启动后的毫秒数,可以直接按无符号整数比较。
CTime和COleDateTime是MFC的时间类,都有= < > 等操作符重载,可以比较。
不知道你用的是哪种时间。
怎么给一个CTime变量赋值
CTime   t(   2000,   3,   19,   18,   0,   0   );   
CString   s   =   t.Format(   "%H:%M:%S "   );
赋初值后,不影响你对年月日的修改。你对一个变量赋初值就不能改它了么?又不是用CONST。

你可能感兴趣的:(timer,null,mfc)