c 時間相關學習 time h

2021-07-27 18:26:44 字數 3119 閱讀 1776

time.h

coordinated universal time(utc):協調世界時,又稱為世界標準時間,也就是大家所熟知的格林威治標準時間(greenwich mean time,gmt)。比如,中國內地的時間與utc的時差為+8,也就是utc+8。美國是utc-5。

calendar time:日曆時間,是用「從乙個標準時間點到此時的時間經過的秒數」來表示的時間。這個標準時間點對不同的編譯器來說會有所不同,但對乙個編譯系統來 說,這個標準時間點是不變的,該編譯系統中的時間對應的日曆時間都通過該標準時間點來衡量,所以可以說日曆時間是「相對時間」,但是無論你在哪乙個時區, 在同一時刻對同乙個標準時間點來說,日曆時間都是一樣的。

epoch:時間點。時間點在標準c/c++中是乙個整數,它用此時的時間和標準時間點相差的秒數(即日曆時間)來表示。

clock tick:時鐘計時單元(而不把它叫做時鐘滴答次數),乙個時鐘計時單元的時間長短是由cpu控制的。乙個clock tick不是cpu的乙個時鐘週期,而是c/c++的乙個基本計時單位。簡單理解就是1ms

broken-down time:分解時間,就是我們常見的年月日時分秒

定義

#ifndef __time_t

#define __time_t /* 避免重複定義 time_t */

typedef long time_t; /* 時間值time_t 為長整型的別名*/

#endif

作用:返回從時間點到(一般是2023年1月1日0時0分0秒)的秒數,即日曆時間

型別:long int

注意: 它所表示的時間不能晚於2023年1月18日19時14分07秒,因此,一些編譯器廠商引入了64位甚至更長的整形數來儲存日曆時間。比如微軟在visual c++中採用了__time64_t資料型別來儲存日曆時間,並通過_time64()函式來獲得日曆時間(而不是通過使用32位字的time()函式),這樣就可以通過該資料型別儲存2023年1月1日0時0分0秒(不包括該時間點)之前的時間。

1.2 以time_t為引數型別或者返回值的函式:

double difftime(time_t time1, time_t time0);

返回time2-time1的值(以秒為單位)。

time_t mktime(struct tm * timeptr);

將結構*tp中的當地時間轉換為time_t型別的日曆時間,並返回該時間。如果不能轉換,則返回-1。

time_t time(time_t * timer);

返回當前日曆時間。如果日曆時間不能使用,則返回-1。如果tp不為null,那麼同時把返回值賦給*tp。

char * asctime(const struct tm * timeptr);

將結構*tp中的時間轉換成如下所示的字串形式:

day month date hours:minutes:seconds year\n\0

如: fri apr 15 15:14:13 2005\n\0

返回指向該字串的指標。字串儲存在可被其他呼叫重寫的靜態物件中。

char * ctime(const time_t *timer);

將*tp中的日曆時間轉換為當地時間的字串,並返回指向該字串指標。字串儲存在可被其他呼叫重寫的靜態物件中。等價於如下呼叫:a

sctime(localtime(tp));

此外:time.h還提供了兩個函式,將日曆時間轉換為平常的年月日時分秒格式 tm

struct tm * gmtime(const time_t *timer);

將*tp中的日曆時間轉換成struct tm結構形式的國際標準時間(utc),並返回指向該結構的指標。如果轉換失敗,返回null。結構內容儲存在可被其他呼叫重寫的靜態物件中。

struct tm * localtime(const time_t * timer);

將*tp中的日曆時間轉換成struct tm結構形式的本地時間,並返回指向該結構的指標。結構內容儲存在可被其他呼叫重寫的靜態物件中。

原始碼

#ifndef _tm_defined

struct tm ;

#define _tm_defined /* 避免重複定義 tm */

#endif

型別:結構體

作用:表示分解時間

把tm指標轉換為time_t: time_t mktime(struct tm *timeptr);

原始碼

#ifndef _clock_t_defined  

typedef long clock_t;

#define _clock_t_defined

#endif

型別:長整型

作用:基本計時單位。

擴充套件:在time.h檔案中,還定義了乙個常量clocks_per_sec,它用來表示一秒鐘會有多少個時鐘計時單元,#define clocks_per_sec ((clock_t)1000)

3.2 相關函式

clock_t clock(void) :

簡單而言,就是該程式從啟動到函式呼叫占用cpu的時間。這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,在msdn中稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。

C 時間和日期 time h

time.h是c的標準庫。c 繼承它後,改了個馬甲,成了ctime。一些基礎api。有些api是不安全的,vs會提醒你使用安全的api。time t time time t time 返回自1970起,經過了多少秒 time t 與 tm 的轉換 struct tm localtime const ...

time h時間函式

目錄 示例 從系統時鐘獲取時間方式 time函式介紹 1 函式名稱 localtime 2 函式名稱 asctime 3 函式名稱 ctime 4 函式名稱 difftime 5 函式名稱 gmtime 6 函式名稱 time 7 函式名稱 tzset 示例 從系統時鐘獲取時間方式 time函式介紹...

time h時間函式

目錄 示例 從系統時鐘獲取時間方式 time函式介紹 1 函式名稱 localtime 2 函式名稱 asctime 3 函式名稱 ctime 4 函式名稱 difftime 5 函式名稱 gmtime 6 函式名稱 time 7 函式名稱 tzset 示例 從系統時鐘獲取時間方式 time函式介紹...