利用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;
}
Tags: