其他分享
首页 > 其他分享> > time() ctime() localtime() gmtime() asctime() strftime() 的区别

time() ctime() localtime() gmtime() asctime() strftime() 的区别

作者:互联网

#include<stdio.h>

#include<time.h>
int main(int argc, const char *argv[])
{
time_t Nowt = 0 ;
time_t i = 0;
char *buf = NULL;
char Buf[50];
struct tm *p; //struct tm变量
char outstr[200];
i = time(&Nowt); //自1970年到现在一共过去了几秒
printf(“1970到目前经历的秒数为:%ld\n”,i);
printf(“自1970-01-01起的小时数 = %ld \n”,i/3600);printf(“1970到目前经历的秒数转换成字符串格式显示:\n”);

buf = ctime(&Nowt);                      //得到一个可视化时间字符串
printf("buf = %s ",buf );
ctime_r(&Nowt, Buf);                     //可重入的版本,指定输出的位置
printf("Buf = %s",Buf);
puts("\n");


p = localtime(&Nowt);
printf("1970到目前经历的秒数通过localtime转换成struct tm结构体时间:\n");
printf("%d年%d月%d日%d时%d分%d秒\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,
		        p->tm_hour,p->tm_min,p->tm_sec);

localtime_r(&Nowt,p);
printf("1970到目前经历的秒数通过localtime转换成struct tm结构体时间:\n");
printf("%d年%d月%d日%d时%d分%d秒\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,
		        p->tm_hour,p->tm_min,p->tm_sec);
puts("\n");

p=gmtime(&Nowt);
printf("1970到目前经历的秒数通过gmtime转换成struct tm 结构体时间:\n");
printf("%d年%d月%d日%d时%d分%d秒\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,
		        p->tm_hour,p->tm_min,p->tm_sec);
gmtime_r(&Nowt, p);
printf("%d年%d月%d日%d时%d分%d秒\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,
		        p->tm_hour,p->tm_min,p->tm_sec);
puts("\n");

buf = asctime(p);
printf("将struct tm结构体时间转换成字符串时间格式时间显示:\n");
printf("Buf = %s",buf);
asctime_r(p,Buf);
printf("Buf= %s",Buf);
puts("\n");

strftime(outstr,sizeof(outstr), "%F %H ", p);              //选择输出样式
printf("将struct tm转换成特定格式的时间规则样式显示:\n");
printf("Result string is \"%s\"\n",outstr);
puts("\n");


i = mktime(p);
printf("将struct tm反转为1970年到现在经过的秒数\n");
printf("i=%ld\n",i);
return 0;
}

运行结果:
在这里插入图片描述

标签:struct,time,gmtime,1970,tm,printf,Nowt,Buf,ctime
来源: https://blog.csdn.net/weixin_45464650/article/details/100032751