C语言笔记:标准IO函数 time()、localtime()、gmtime()获取当前系统时间(Linux、windows)

time()函数

函数功能:获取从1970年1月1日00:00:00到现在走过的秒数

1、time返回的是:格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。
2、time函数原型:

time_t time(time_t *tloc);
//返回值与参数作用相同,都用来获取时间
//time_t:长整形long
//1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。

3、time的两种用法:

 time_t t1,t2; //分别声明两种使用方式的赋值对象
 t1=time(0);   //第一种使用方式
 time(&t2);    //第二种使用方式

4、time_t既然是长整形,那么必然有它的计时范围,最晚不能超过2038年1月18日19时14分07秒

ctime()函数

函数功能:将time()函数的返回值进行解析,然后返回一串时间字符串
1、函数原型:

char *ctime(const time_t *timep);

2、用法:将time()函数的返回值作为参数传入,用字符型数组接收返回值
常用代码:

tim = time(NULL);//获取时间

char time_buf[100];
time_buf = ctime(tim);//解析
printf("ctime: %s\n",time_buf);

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

localtime()、gmtime函数

函数功能:将time()函数返回的数值解析成当前日期
1、函数原型

struct tm *localtime(const time_t *timep);
struct tm *gmtime(const time_t *timep);

2、参数:timep:为time()函数的返回值

3、返回值:struct 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代表一月) - 取值区间为[0,11] */
          int tm_year;      /* 年份,其值等于实际年份减去1900 */
          int tm_wday;      /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
          int tm_yday;      /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
          int tm_isdst;     /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};

实例代码

#include <stdio.h>
#include <time.h>

//time返回的是:格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。
//localtime() 、gmtime() 解析time

int main()
{
    
    
	int h, m, s;//时分秒 
	struct tm *local;//用localtime函数获取时间 
    time_t t1,t2; //分别声明两种使用方式的赋值对象
	
    t1=time(0);   //第一种使用方式
    //time(&t2);    //第二种使用方式
    printf("t1=%ld\n",t1);
   
   
	/****传统方法解析*****/
	s = t1 % 60;
    m = (t1 % 3600) / 60;
    h = (t1 % (3600 * 24)) / 3600 + 8;
    h %= 24;
    printf("time: %02d:%02d:%02d\n", h, m, s);
    
    /****localtime()函数解析***/ 
    local=localtime(&t1);//解析t1秒数,保存到结构体loccal
    printf("Localtime is: %d年 %d月 %d日 %d:%d:%d\n",local->tm_year+1900,local->tm_mon+1,
		local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);
    
     /****gmtime()函数解析***/ 
	local=gmtime(&t1);
	printf("gmtime is:  %d年 %d月 %d日 %d:%d:%d\n",local->tm_year+1900,local->tm_mon+1,
		local->tm_mday,local->tm_hour+8,local->tm_min,local->tm_sec);
    return 0;
}

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

猜你喜欢

转载自blog.csdn.net/mbs520/article/details/108022552