C語言中的時間轉換

2021-10-01 17:23:07 字數 3178 閱讀 2087

c語言關於時間轉換的函式在標頭檔案中,其中中包含了各種操作時間和日期的函式,中包換結構體timeb,可以用來獲取ms級別的時間

可利用標頭檔案中的兩個結構體獲取ms級的執行時間, 統計程式的時間複雜度

struct timeb 

;

#include

#include

using

namespace std;

intmain()

// 利用c++11的chrono庫求時間間隔

long

fibonacci

(unsigned n)

#include

intmain()

適合儲存處理器時間的型別clock_t
typedef

long clock_t;

適合儲存日曆時間型別time_t
// 32位表現為long 64位中表現為long long

#ifdef _use_32bit_time_t

typedef __time32_t time_t;

#else

typedef __time64_t time_t;

#endif

time_t time

(time_t *t)

// 實質時表示乙個總秒數

// 傳入引數一般為null 得到的結果為格林威治時間2023年01月01日00時00分00秒(北京時間2023年01月01日08時00分00秒)起至現在的總秒數

用來儲存時間和日期的結構stutic tm
struct tm 

;

呼叫time()函式會得到kernel時間time()返回值為時間總秒數(前面提到了)

time_t tnowutc =

time

(null

);

time_t型別的時間轉換為struct tm結構體,得到時間的詳細資訊

struct tm *

gmtime

(const time_t *timep)

;// 得到utc+0時區詳細資訊

struct tm *

localtime

(const time_t *timep)

;// 得到本地時區時間詳細資訊

struct tm結構體轉換為time_t型別

time_t mktime

(struct tm *tm);;

// linux和window都有 本地時間轉換位utc時間

static time_t _mkgmtime

(struct tm*

const _tm)

;// windows下 utc時間轉time_t時間型別的utc時間

static time_t mkgmtime

(struct tm*

const _tm)

;// linux下 utc時間轉time_t時間型別的utc時間

//當然 在linux下可以使用下面函式 效果相同 但不常用

time_t timelocal

(struct tm *tm)

;time_t timegm

(struct tm *tm)

;

struct tm結構體轉換為string

char

*asctime

(const

struct tm *tm)

;

struct tm 格式化成string(可按照自定義格式格式化) 具體格式化標準可檢視strftime函式說明

size_t strftime (

char

* ptr, size_t maxsize,

const

char

* format,

const

struct tm* timeptr )

;

time_t型別轉string(固定格式)

char

*ctime

(const time_t *timep)

;

例子

本地時間轉換為utc時間戳

time_t ctimer::

getutctime

(int ndate,

int ntime)

;#ifdef win32

// windows

return

_mkgmtime

(&tmouter)

;#else

// linux

return

timegm

(&tmouter)

;#endif

// win32

}

將上面**格式化為字串輸出

string ctimer::

getutctimestr

(int ndate,

int ntime)

;strftime

(buf,

sizeof

(buf)

,"%y-%m-%d %x"

,gmtime

(&tutc));

return

string

(buf)

;}

得到本地日期和時間

int ctimer::

getlocaldateint()

int ctimer::

getlocaltimeint()

C語言中的型別轉換

計算機進行算術運算時,通常要求運算元具有相同的位數 相同的儲存方式。而c語言支援在表示式中混合使用基本資料型別,因此需要在不同的資料型別之間進行轉換。在c語言中存在兩種型別的轉換,一種是隱式轉換,由編譯器自動處理轉換而無需程式開發人員介入,另一種是強制型別轉換 顯式轉換 需要程式開發人員使用強制轉換...

C語言中的型別轉換!

自動轉換發生在不同資料型別運算時,在編譯的時候自動完成 自動轉換遵循的規則就好比小盒子可以放進大盒子裡面一樣,下圖表示了型別自動轉換的規則。縮寫 ascii 英文全稱 american standard code for information interchange 美國資訊交換標準 是一種用於資...

C語言中的型別轉換

c語言中的型別轉換可以分為兩種 隱式轉換中的規則有 窄的向寬的轉變 unsigned 同型別無符號比有符號寬 同型別的轉換例如 int a 10 unsigned int b 10 if a b printf a b else printf a不同型別的轉換例如 int c 10 unsigned ...