2008年9月1日 星期一

[MFC] CTime的使用

如果要找出一個月的第3個幾個星期3要怎麼做呢?

很簡單的方法就是用CTime從這個月的1號開始,對每一天判斷使否為星期三,再利用CTimeSpan設定一天的長度往後加。如此在數到第三個星期三時,就知道是哪一天了。這是一個雖然暴力但是很簡單的做法。

程式碼:

//下面這段程式碼會找出這個月的第三個禮拜三
CTime Find3rdWed()
{
//取得今天的時間
CTime now = CTime::GetCurrentTime();
//從這個月的1號開始 (year, month, day, hour, min, sec)
CTime wholeMonth(now.GetYear(), now.GetMonth(), 1, 0, 0, 0);
//設定一天的長度
CTimeSpan aDay(1, 0, 0, 0);
//禮拜三count
int wedCount = 0;


//尋找第三個禮拜三, 只檢查28天, 因為第三個禮拜三一定在28日以前, 並且配合最短日期的月份
for(int i = 1;i <= 28;i++)
{
//sunday = 1, monday = 2, ...
if(wholeMonth.GetDayOfWeek() == (1 + 3))
wedCount++;
if(wedCount == 3)
{
//find !!
return wholeMonth;
}
//檢查下一天
wholeMonth = wholeMonth + aDay;
}
}


參考資料 :
http://blog.yam.com/swwuyam/article/12603979

沒有留言: