1. 程式人生 > >Windows下c++獲取系統時間的三種方法

Windows下c++獲取系統時間的三種方法

1、CTime類的static介面GetCurrentTime()

包含的標頭檔案#include <atltime.h>

CTime類的物件表示的時間是基於格林威治標準時間(GMT)的。

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

構造和初始化:

       CTime(__time64_t time);

       以一個__time64_t(注意:最前面的下劃線有兩條)型別的資料來構造一個CTime物件。引數time是一個__time64_t型別的值,表示自GMT時間1970年1月1日零點以來的秒數,這裡要注意的是,引數time代表的時間會轉換為本地時間儲存到構造的CTime物件中。例如,我們傳遞引數0構造一個CTime物件,然後呼叫CTime物件的GetHour成員函式將返回8,因為引數0代表的GMT時間轉換為北京時間後為1970年1月1日 8:00:00。

CTime(
   int nYear,
   int nMonth,
   int nDay,
   int nHour,
   int nMin,
   int nSec,
   int nDST = -1 
);

以本地時間的年、月、日、小時、分鐘、秒等幾個時間分量構造CTime物件。注意年份取值範圍在1970-3000,如果不在該範圍內構造初始化的話,就會出現異常崩潰。

       static CTime WINAPI GetCurrentTime( );

       獲取系統當前日期和時間。返回表示當前日期和時間的CTime物件。

	CTime tmp;
	tmp = CTime::GetCurrentTime();

	info.nYear = tmp.GetYear();
	info.nMonth = tmp.GetMonth();
	info.nDay = tmp.GetDay();
	info.nHour = tmp.GetHour();
	info.nMinute = tmp.GetMinute();
	info.nSecond = tmp.GetSecond();

2、Windows api GetSystemTime()

       CTime(const SYSTEMTIME& st,int nDST = - 1) ;

       以一個SYSTEMTIME結構體變數來構造CTime物件。

	SYSTEMTIME tmp;
	GetSystemTime(&tmp);

	info.nYear = tmp.wYear;
	info.nMonth = tmp.wMonth;
	info.nDay = tmp.wDay;
	info.nHour = tmp.wHour;
	info.nMinute = tmp.wMinute;
	info.nSecond = tmp.wSecond;


3、window api GetLocalTime()(毫秒級)

	SYSTEMTIME tmp;
	GetLocalTime(&tmp);

	info.nYear = tmp.wYear;
	info.nMonth = tmp.wMonth;
	info.nDay = tmp.wDay;
	info.nHour = tmp.wHour;
	info.nMinute = tmp.wMinute;
	info.nSecond = tmp.wSecond;
	info.nMillSecond = tmp.wMilliseconds;