linux中time函数

时间戳的三种需求格式:time_t char* struct tm
下图为三种需求格式之间相互转换需要用到的函数。
在这里插入图片描述

time(),gmtime(),localtime(),mktime(),strftime()

在这里插入图片描述
localtime中返回值struct tm*,指向静态区
在这里插入图片描述

time()函数

#include <time.h>

time_t time(time_t *t);

此函数会返回从公元 1970 年1 月1 日的UTC 时间从0 时0 分0 秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t 指针所指的内存。
timer=NULL时,得到机器日历时间

返回值:
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno 中。

strftime();

在这里插入图片描述
将参数4中的time按照参数3的要求获取,然后写入到参数1中。参数1的大小由参数2限制。

time_t mktime(struct tm *tm)
//将struct tm格式转换为time_t格式,如果中间数据有溢出,则自动调整时间
//FS/100day.c
struct tm *tm;
	time_t timestamp;
	char timestr[BUFFSIZE];

	timestamp = time(NULL);
	tm = localtime(&timestamp);
	
	/*
	fprintf(stdout, "time:	%d-%d-%d %d:%d:%d\n", \
		tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, \
		tm->tm_min, tm->tm_sec);		
	*/
	strftime(timestr, BUFFSIZE,"Now: %Y-%m-%d" ,tm);
	puts(timestr);	

	tm->tm_mday += 100;
	mktime(tm);	

	strftime(timestr, BUFFSIZE,"100 days later: %Y-%m-%d" ,tm);
	puts(timestr);

在这里插入图片描述

//FS/timelog.c
/*
把当前时间按照相应格式每秒钟写入到一个文件中去,用另一个终端
采用“tail -f 文件” 监测写入的中间状态
1.fopen的a+模式;
2.time_t,localtime
3.除了终端设备,其他设备默认是全缓冲形式,需要采用fflush不断刷新,
才能看到中间过程
*/
	char buf[BUFFSIZE];
	int count;
	count = 0;
	while(fgets(buf, BUFFSIZE, fp) != NULL)
	{
		count++;
	}

	time_t stamp;	
	struct tm* tm; 
	while(1)
	{
		time(&stamp);		
		tm = localtime(&stamp);	
		fprintf(fp, "%-4d%d-%d-%d %d:%d:%d\n", ++count,\
			tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,\
			tm->tm_hour, tm->tm_min, tm->tm_sec);
		fflush(fp);
	
		sleep(1);
	}

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值