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


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源碼修改過的版本(https://blog.csdn.net/earbao/article/details/51786724或者https://blog.csdn.net/wisage/article/details/6269997),可以直接拿來用。其實現並沒有用到sscanf,而是更加底層的格式解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM