Linux和Windows下獲得當前時間並格式化

2022-03-08 07:23:49 字數 1036 閱讀 8845

ref:linux和windows下獲得當前時間並格式化, 19.7

很多時候我們希望在程式裡獲得當前時間,比如“20190720 11:40:32”這樣的時間格式字串,如何實現?

linux下:

time_t now;

struct tm *tm;

time(&now);

tm = localtime(&now);

char time_str[100];

sprintf(time_str, "%04d%02d%02d %02d:%02d:%02d",

tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,

tm->tm_hour, tm->tm_min, tm->tm_sec);

time_str的內容為“20190720 11:40:32”這樣格式的時間,也可以格式化為其他形式。

windows下:

time_t curtime;

struct tm *timeinfo;

char buffer[80];

time(&curtime);

timeinfo = localtime(&curtime);

strftime(buffer, sizeof(buffer), "%y-%m-%d-%h-%m-%s", timeinfo);

buffer的內容為“2019-07-20-11-40-32”這樣格式的時間,也可以格式化為其他形式。

注:使用ctime函式和asctime函式也可以列印出本地時間的字串,比如“sun aug 11 13:38:54 2019”這樣的形式。這兩個函式的區別就是傳參的不同,一個是time_t,一個是struct tm。

上面的strftime也是可以使用sprintf實現相同的功能。與strftime相反的操作是strptime,遺憾這個函式在windows下沒有實現,網上能找到別人根據linux下的strptime原始碼修改過的版本(或者可以直接拿來用。其實現並沒有用到sscanf,而是更加底層的格式解析。