利用C庫函數time()打印當前系統動態時間
引入日期和時間頭文件
#include<time.h>
用time_t定義一個存儲時間的變量獲取時間(以秒為單位)
time_t t;
time (&t); //獲取1970年以來的秒數,UTC(協調世界時)。
struct tm 結構體
根據time_t函數獲得的時間通過struct tm結構體轉換為本地時間(北京時間)。
struct tm* mt = localtime(&t);
tm 結構的定義如下:
struct tm {
int tm_sec; /* 秒,範圍從 0 到 59 */
int tm_min; /* 分,範圍從 0 到 59 */
int tm_hour; /* 小時,範圍從 0 到 23 */
int tm_mday; /* 一月中的第幾天,範圍從 1 到 31 */
int tm_mon; /* 月,範圍從 0 到 11 */
int tm_year; /* 自 1900 年起的年數 */
int tm_wday; /* 一周中的第幾天,範圍從 0 到 6 */
int tm_yday; /* 一年中的第幾天,範圍從 0 到 365 */
int tm_isdst; /* 夏令時 */
};
打印時間
tm_year是從格林威治時間1970年算起,打印它時需要加上1900;tm_mon從0開始算,打印它時需要加1。
printf("%d-%02d-%d %02d:%02d:%02d\r", mt->tm_year + 1900, mt->tm_mon + 1,
mt->tm_wday, mt->tm_hour, mt->tm_min, mt->tm_sec);
打印效果如下:
%02d:輸出的整型數不足兩位,左側用0補齊。
\r:轉義字符回到當前行的行首,而不會換到下一行,繼續輸出,本行前面的內容會被逐一覆蓋;
打印效果如下:
延時函數sleep()
windows
Sleep()
#include <windows.h>
參數為毫秒
linux
sleep()
函數原型
#include <unistd.h>
參數為秒
完整代碼:
#include <stdio.h>
#include <time.h>
#include <windows.h>
int main() {
time_t t; //定義一個存儲時間的變量(以秒為單位)
while (1) {
time(&t);
struct tm* mt = localtime(&t);
printf("%d-%02d-%d %02d:%02d:%02d\r", mt->tm_year + 1900, mt->tm_mon + 1,
mt->tm_wday, mt->tm_hour, mt->tm_min, mt->tm_sec);
Sleep(450);
}
return 0;
}