C++循环一个时间段(MFC)
C++循环一个时间段(MFC):本想用C++写,但是除了for枚举,没有发现更好的方法,而且要考虑的情况实在是多,于是找到了MFC中循环一个时间段的方法。
[cpp]
CTime date1(2012, 2, 2, 0, 0, 0); //时间1
CTime date2(2012, 3, 3, 0, 0, 0); //时间2
int nDays = (int)((date2 – date1).GetDays());//时间差
for (int i = 0; i <= nDays; i++) //循环时间差
{
CTimeSpan daySpan(i, 0, 0, 0);
CString www_cplusplus_me = (date1 + daySpan).Format(_T("%Y%m%d"));
MessageBox(www_cplusplus_me);
}
CDialogEx::OnOK();
[/cpp]
CTime类和CTimeSpan类:
- GetDays(); // 返回日数
- GetHours(); // 返回小时数(-23至23之间)
- GetTotalHours(); // 返回总的小时数
- GetMinutes(); // 返回分钟数(-59至59之间)
- GetTotalMinutes(); // 返回总的分钟数
- GetSeconds(); // 返回秒数(-59至59之间)
- GetTotalSeconds(); // 返回总的秒数
- 简介:CTime类的对象表示的时间是基于格林威治标准时间(GMT)的。CTimeSpan类的对象表示的是时间间隔。一个CTimeSpan对象代表一个相对的时间段。和CTime不同的是,CTime描述的是绝对时间。
- 注意:CTime里面使用的成员变量是time_t类型,该类型是个long型,由于long类型的原因,所以该类只能处理4294967296秒约68年的数据,所以用CTime只能处理1970年到2038年的日期。
- 另外: COleDateTime和COleDateTimeSpan类,使用该两个类完全可以代替CTime和CTimeSpan。并可处理从100年1月1日到9999年12月31日的日期时间,具体可以查询相关的资料文档。
使用总结:
[cpp]1、CTime转换为CString:
CTime tmSCan = CTime::GetCurrentTime();
CString szTime = tmScan.Format(“‘%Y-%m-%d %H:%M:%S'”);
2、CString转换为CTime
CTime(CString1,CString2,CString3,0,0,0); //年月日时分秒
3、时间差获取
CTime time1 = CTime::GetCurrentTime();
CTime time2 = CTime::GetCurrentTime();
CTimeSpan timeSpan = time2 – time1;
int nTSeconds = timeSpan.GetTotalSeconds(); //获取总秒数[/cpp]