c++時間形式轉換

铭正發表於2024-10-31

https://cplusplus.com/reference/ctime/
先放上官方文件。

ctime類裡,有很多轉換時間格式的方法,下面只舉例將UTC時間,轉換為字串的程式碼。

‌‌Unix時間‌,也稱為‌POSIX時間,是UNIX或類UNIX系統使用的時間表示方式。它從協調世界時1970年1月1日0時0分0秒起至現在的總秒數,不考慮閏秒。這種時間表示方式被定義為從‌UTC時間1970年1月1日0時0分開始流逝的秒數。Unix時間也常被稱為Unix時間戳,是計算機世界中使用的一種時間表示方法。如果某個時間是以巨大的科學計數的形式顯示的,那它基本就是UTC時間。

上程式碼,註釋是關鍵。


#include <ctime>  //需要包含此類

time_t rawtime;  //定義一個時間型變數,就類似”整形、浮點型變數“
struct tm ptm;  //定義一個時間結構

rawtime = (time_t)list_n1->at(0).time;  //將一個獲取的UTC時間,賦值給剛才定義的時間變數。(time_t)的作用是轉換型別,獲取的UTC時間是double型,不加(time_t)的話,編譯時會報警告,不影響程式執行。
gmtime_s(&ptm,&rawtime); //上面連結的官方文件裡用的是gmtime(),如果本句寫成 ptm = gmtime(&rawtime) , 編譯時會顯示錯誤,提示你gmtime()不安全,現在都用gmtime_s()。
cout << 1970+ptm.tm_year << "年" << 1+ptm.tm_mon << "月" << ptm.tm_mday << "日," << endl;  //根據上述UTC時間的概念,可知,此轉換完後,是從1970年1月1日0時0分開始的。所以2024年會顯示成54年,所以前面加1970即可修正,月前+1同理,日不用加。並不是所有的UTC型時間都是從1970年1月1日0時0分開始的,具體如何修正,需要根據實際情況來修正。

相關文章