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

本文介绍了在C++中如何使用CTime类获取当前时间,并利用CTimeSpan类来计算时间间隔。通过示例代码展示了如何避免负值问题,正确地比较不同时间点之间的差值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

涉及到CTime 的比较大小时。CTimeSpan<wbr>隆重登场了。减少了很多麻烦事- -!<wbr></wbr></wbr>

CTime 类只能用来获取时间,不能用来进行时间比较,否则会产生负值

例如:

CWnd::OnTimer(nID)
{

CTime Start = CTime::GetCurrentTime();<wbr><wbr>(注:不要用GetCurrentTime,而用CTime::GetCurrentTime,前者计算得到的可能为格林尼治时间)<br> ......<br><wbr><wbr>CTime Now = CTim::GetCurrentTime();<br><wbr><wbr>if(Now.GetSecond() - Start.GetSecond() &gt;=10)<br><wbr><wbr>{<br><wbr><wbr><wbr><wbr>MessageBox("时间过了10秒!");<br><wbr><wbr><wbr><wbr>Start = Now;<br><wbr><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

以上这段代码在经过一分钟后(或 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();//获取总共有多少秒

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值