time_t和struct tm之間的轉化
time_t和struct tm結構體
1:ubuntu man文件對time_t的解釋
從utc 2023年1月1日0時0分0秒開始經過的描述。例如time_t tt = 2;可以認為是從utc 2023年1月1日0時0分0秒開始經過了2秒的時間。2:ubuntu man文件對struct tm的解釋,
儲存著年月日時分秒等具體時間點資訊,需要注意的是,年份是從2023年開始的,例如119指的是2023年,月份是從零開始的,0指的是1月(january)。3:linux常用時間函式
struct tm *localtime(const time_t *timep);struct tm localtime_r(const time_t timep, struct tm result);
/**函式將time_t轉換為用年月日時分秒表示的struct tm結構,結果為本地時間。例如給定time_t為83600(從utc 1970-01-01:00:00:00開始的8小時),當本地電腦時區為上海時區(東八區)時,轉換結果為1970-01-01:00:00:00,當本地電腦為**時區(0時區)時,轉換結果為1970-01-01:08:00:00
localtime_r是執行緒安全的
/
char *asctime(const struct tm *tm);char *asctime_r(const struct tm *tm, char *buf);
/asctime 將時間以換為字串字串格式返回,asctime_r為執行緒安全/
time_t mktime(struct tm *tm);/函式將struct tm結構的本地時間轉換成time_t,本地電腦時區如果為上海時區(東八區),1970-01-01:00:00:00將轉換成-28800(東八區時間比格林威治時間快了28800秒),電腦時區為**時區,則會轉化為0/
struct tm *gmtime(const time_t *timep);struct tm *gmtime_r(const time_t *timep, struct tm *result);
/gmtime是把本地日期和時間轉換為格林威治(gmt)時間的函式。如果本地電腦時區為上海時區(東八區),那麼28800將會被轉換成1970-01-01:00:00:00/
time_t timelocal(struct tm *tm);4:相關**及其執行結果time_t timegm(struct tm *tm);
/函式將年月日時分秒表示的struct tm格式的時間轉換為time_t格式,timelocal將引數傳入的時間按照本地時間處理,而timegm將引數傳入的時間按照gmt時間處理。於是,timelocal返回的結果跟本地電腦時區有關,上海時區(東八區)的情況下將1970-01-01:08:00:00轉換為0.timegm將1970-01-01:08:00:00轉化為28800/
/*根據文件,這兩個函式不是posix標準,可以使用的替代方案參考
**/
#include
#include
void
mktime_test()
void
gmtime_test()
void
gmt_tm_to_gmt_time_t()
void
local_tm_to_local_time_t()
void
main()
time t和struct tm型別的相互轉換
使用 gmtime 函式或localtime 函式將time t 型別的時間日期轉換為 struct tm型別 使用time 函式返回的是乙個 long 值,該值對使用者的意義不大,一般不能根據其值確定具體的年 月 日等資料。gmtime 函式可以方便的對 time t 型別資料進行轉換 將其轉換為...
CRT中的時間 time t和tm
時間處理時實際專案中經常碰到的問題,這裡介紹最常用的時間處理函式。首先介紹基本的時間概念。時間一般分為兩種,一種是本地時間 local time 一種是協調世界時間 coordinated universal time utc 也就是傳說中的格林威治時間。本地時間與utc時間之間的差即為時差,比如,...
CRT中的時間 time t和tm
時間處理時實際專案中經常碰到的問題,這裡介紹最常用的時間處理函式。首先介紹基本的時間概念。時間一般分為兩種,一種是本地時間 local time 一種是協調世界時間 coordinated universal time utc 也就是傳說中的格林威治時間。本地時間與utc時間之間的差即為時差,比如,...