最近做項目,有這麼一個需求:根據當前時間,得到前N天的年月日格式字符串,比如今天是2010年06月04日,那麼今天的格式字符串爲:20100604,昨天的應該爲20100603,前天的爲20100602, etc...
看到這個需求的時候,我首先是想根據年月日推算前N天分別是什麼.但是後來一想,這個方法太麻煩了,要考慮年月日的進位退位,不是一般的繁瑣.
後來在老大的幫助下,使用了一種新的方法.就是得到當前距離1970年的秒數,然後分別減去一天的秒數,然後再轉換回CTime類型...算進位和退位的工作交給了CTime 和其它一些函數來處理...哈.
廢話少說:代碼如下:
view plaincopy to clipboardprint?
01./*
02.* resultStr: CString類型的數組,存放分解之後的日期字符串
03.* SplitCount: 需要算日期的前N天
04.*/
05.long SplitDate(CString *resultStr, int Splitcount)
06.{
07. CString tmpStr = L"";
08. CTime curTime;
09. time_t ltime;
10.
11. ltime = (CTime::GetCurrentTime()).GetTime(); //獲取當前時間
12. for (int i = 0; i < Splitcount; i++)
13. {
14. curTime = ltime; //賦值到CTime,CTime的構造函數會自動處理轉換
15. tmpStr.Format(L"%d%02d%02d", curTime.GetYear(), curTime.GetMonth(), curTime.GetDay());//時間格式化
16. resultStr[i] = tmpStr;
17. struct tm *tmTmp = localtime( <ime);
18. tmTmp->tm_mday -= 1; //減去一天
19. ltime = mktime(tmTmp); //重新生成時間
20. }
21. return 0;
22.}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zaijzhgh/archive/2010/06/04/5648227.aspx