C/C++教程

利用C库函数time()打印当前系统动态时间

本文主要是介绍利用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;
}

标签:C库,函数,系统动态,结构,sleep,windows,代码 来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

这篇关于利用C库函数time()打印当前系统动态时间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!