C 獲取系統時間

2021-08-22 19:45:37 字數 2129 閱讀 2022

time_t      time(

time_t  *t

);

返回從1970.1.1到指定時間 t 的秒數

time_t 為64位長整型,即__int64

vc6.0的64位整數分別叫做__int64與unsigned __int64,其範圍分別是[-2^63, 2^63)與[0,2^64),即-9223372036854775808~9223372036854775807與0~18446744073709551615(約1800億億)。對64位整數的運算與32位整數基本相同,都支援四則運算與位運算等。當進行64位與32位的混合運算時,32位整數會被隱式轉換成64位整數。

1、localtime —— 平台通用,多執行緒下不安全

struct tm   *localtime(

const time_t *clock

);

這個函式在返回的時候,返回的是乙個指標,實際的記憶體是localtime內部通過static申請的靜態記憶體,所以通過localtime呼叫後的返回值不及時使用的話,很有可能被其他執行緒localtime呼叫所覆蓋掉。

2、localtime_r —— linux平台,安全函式

多執行緒應用裡面,應該用localtime_r函式替代localtime函式,因為localtime_r是執行緒安全的,但是localtime_r只能執行於linux平台。

struct tm*   localtime_r(

const time_t* timer,

struct tm* result

);

3、localtime_s —— windows平台,安全函式

localtime_s也是用來獲取系統時間,執行於windows平台下,與localtime_r只有引數順序不一樣.

errno_t   localtime_s(

struct tm* _tm,

const time_t *time

);

struct tm ;

time_t timesec=time(null);

struct tm* ptm=localtime(×ec);

sprintf("%02d:%02d:%02d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec);

time_t timesec=time(null);

struct tm ptm=;

localtime_r(×ec, &ptm);

sprintf("%02d:%02d:%02d", ptm.tm_hour, ptm.tm_min, ptm.tm_sec);

time_t timesec = time(null);

struct tm ptm;

localtime_s(&ptm, ×ec);

printf("%d:%d:%d", ptm.tm_hour, ptm.tm_min, ptm.tm_sec);

注意,不能寫成如下格式!!!

time_t timesec = time(null);

struct tm *ptm = null;

localtime_s(ptm, ×ec);

printf("%d:%d:%d", ptm->tm_hour, ptm->tm_min, ptm->tm_sec);

否則程式會崩潰並丟擲異常:

原因是系統不允許空指標作為引數去呼叫標準庫函式!!

C 系統時間獲取

在c 中想要獲取當前系統的時候可以使用函式 time t time time t timer 使用這個函式如果傳入的 引數不是null 那麼,它就會把當前系統的時間設定到這個指標當中 這個函式返回的 數字是 從 00 00 hours,jan 1,1970 utc 的 秒 struct tm loc...

c 獲取系統時間

方案 優點 僅使用c標準庫 缺點 只能精確到秒級 include include int main void size t strftime char strdest,size t maxsize,const char format,const struct tm timeptr 根據格式字串生成字...

C 獲取系統時間

include include using namespace std int main 說明 struct tm 在vc 中,我們可以借助ctime時間類,獲取系統當前日期 ctime t ctime getcurrenttime 獲取系統日期 int d t.getday 獲得幾號 int y ...