MFC:CTime類和CTimeSpan類



CTime類

CTime類表示日期和時間,上限是3000年12月31日,下限是1970年1月1日 12:00:00 AM GMT。

CTime(); 構造一個未經初始化的CTime對象。此狀態的CTime對象,值為0,表示1970年1月1日 12:00:00 AM GMT,轉換為北京時間后為1970年1月1日 8:00:00。

CTime(__time64_t time); 以一個__time64_t(注意:最前面的下划線有兩條)類型的數據來構造一個CTime對象。
  time以秒為單位,參數time是一個__time64_t類型的值,表示自GMT時間1970年1月1日零點以來的秒數,這里要注意的是,參數time代表的時間會轉換為本地時間保存到構造的CTime對象中。

CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1);
  以本地時間的年、月、日、小時、分鍾、秒等幾個時間分量構造CTime對象。參數nYear、nMonth、nDay、nHour、nMin、nSec分別表示年、月、日、小時、分鍾、秒,取值范圍如下:
    nYear 1970-3000
    nMonth 1-12
    nDay 1-31
    nHour 0-23
    nMin 0-59
    nSec 0-59
    nDST 指定是否實行夏令時,為0時表示實行標准時間,為正數時表示實行夏令時,為負數時由系統自動計算實行的是標准時間還是夏令時。

CTime(const SYSTEMTIME& st, int nDST = - 1); 以一個SYSTEMTIME結構體變量來構造CTime對象

static CTime WINAPI GetCurrentTime(); 獲取系統當前日期和時間。返回表示當前日期和時間的CTime對象。

int GetYear() const;獲取CTime對象表示時間的年份。范圍從1970年1月1日到2038年(包括2038年)1月18日。

int GetMonth() const; 獲取CTime對象表示時間的月份。范圍為1到12。

int GetDay() const; 獲取CTime對象表示時間的日期。范圍為1到31。

int GetHour() const; 獲取CTime對象表示時間的小時。范圍為0到23。

int GetMinute() const; 獲取CTime對象表示時間的分鍾。范圍為0到59。

int GetSecond() const; 獲取CTime對象表示時間的秒。范圍為0到59。

int GetDayOfWeek() const; 此函數的返回值表示CTime對象代表的是星期幾,1表示是周日,2表示是周一,以此類推。

CString Format(LPCTSTR pszFormat) const; 將CTime對象中的時間信息格式化為字符串。
  參數pszFormat是格式化字符串,與printf中的格式化字符串類似,格式化字符串中帶有%前綴的格式碼將會被相應的CTime時間分量代替,而其他字符會原封不動的拷貝到返回字符串中。格式碼及含義如下:
    %Y:年(1970 - 3000)
    %m:月的十進制表示(01-12)
    %d:日(01 - 31)
    %H:時,24小時制 (00-23)
    %I:時,12小時制 (00-11)
    %M:分鍾(00-59)
    %S:秒(00-59)
    %p:12小時制的上下午標示(AM/PM)
    %w:十進制表示的星期幾(0-6)
    %a:周的英文縮寫形式
    %A:周的英文全名形式
    %c:完整的日期和時間
    %b:月的英文縮寫形式,如Jan
    %B:月的英文全名形式,如January
    %j:十進制表示的一年中的第幾天(001-366)
    %U:一年中的第幾個星期(00-51),星期日是一周的第一天
    %W:一年中的第幾個星期(00-51),星期一是一周的第一天

  舉個例子,以"年-月-日 時:分:秒"格式來顯示當時間的格式如下:
    CTime time = CTime::GetCurrentTime();
    time.Format(_T("%Y-%m-%d %H:%M:%S"));
    其中將以4位數顯示年,其它數字以2位顯示,不足時前面補0。

CTime類還可以直接用於計算:
  CTime operator +(CTimeSpan timeSpan) const;
    將CTime對象和CTimeSpan對象相加,返回一個CTime對象。實際意義就是在一個時間的基礎上推后一個時間間隔,得到一個新的時間。
  CTime operator -(CTimeSpan timeSpan) const;
    將CTime對象和一個CTimeSpan相減,返回一個CTime對象。實際意義就是在一個時間的基礎上提前一個時間間隔,得到一個新的時間。
  CTimeSpan operator -(CTime time) const;
    將該CTime對象和另一個CTime對象相減,返回一個CTimeSpan對象。實際意義就是計算兩個時間點的間隔,得到一個CTimeSpan對象。
  CTime& operator +=(CTimeSpan span);
    為該CTime對象增加一個span表示的時間間隔。
  CTime& operator -=(CTimeSpan span);
    為該CTime對象減去一個span表示的時間間隔。
  CTime& operator =(__time64_t time);
    為該CTime對象賦予一個新的時間值。

用於比較的運算符:
  operator == 比較兩個絕對時間是否相等。
  operator != 比較兩個絕對時間是否不相等。
  operator > 比較兩個絕對時間,是否前一個大於后一個。
  operator < 比較兩個絕對時間,是否前一個小於后一個。
  operator >= 比較兩個絕對時間,是否前一個大於等於后一個。
  operator <= 比較兩個絕對時間,是否前一個小於等於后一個。

CTimeSpan類

CTimeSpan表示的是時間間隔。

CTimeSpan(); 構造一個未經初始化的CTimeSpan對象。

CTimeSpan(__time64_t time); 以一個__time64_t類型的數據來構造CTimeSpan對象,time以秒為單位。

CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs); 以天、小時、分鍾、秒等時間分量來構造CTimeSpan對象。每個時間分量的取值范圍如下:

lDays 0-25000
nHours 0-23
nMins 0-59
nSecs 0-59

GetDays():獲得CTimeSpan類對象中包含的完整的天數。
GetHours():獲得當天的小時數,取值范圍為-23到23。
GetTotalHours():獲得CTimeSpan類對象中包含的完整的小時數。
GetMinutes():獲得當前小時包含的分數,取值范圍為-59到59。
GetTotalMinutes():獲得CTimeSpan類對象中包含的完整的分數。
GetSeconds():獲得當前分鍾包含的秒數,取值范圍為-59到59。
GetTotalSeconds():獲得CTimeSpan類對象中包含的完整的秒數。

CString Format(LPCTSTR pszFormat) const; 將一個CTimeSpan對象格式化為字符串。使用方式與CTime::Format類似,格式碼及含義如下:

%D:CTimeSpan對象中的總天數;
%H:不足整天的小時數;
%M:不足1小時的分鍾數;
%S:不足1分鍾的秒數;
%%:百分號。

另外,CTimeSpan類也重載了運算符“=”,“+”,“-”,“+=”,“-=”,“==”,“!=”,“<”,“>”,“<=”,“>=”,用於CTimeSpan對象的賦值、加減運算及兩個CTimeSpan對象的比較。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM