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 ...