C语言<time.h>标准库学习总结

日期与时间函数 time.h

文章目录

  • 日期与时间函数 time.h
    • 一、clock_t和time_t的定义
    • 二、struct tm结构体
      • 1.结构体
      • 2.应用
    • 三、时间函数
      • 1.clock_t clock(void)
      • 2.time_t time(time_t *tp)
      • 3.double difftime(time_t time2,time_t time1)
      • 4.time_t mktime(struct tm *tp)


C语言中使用时间和日期函数时,需要添加头文件,clock_t和time_t是两个表示时间的算数类型,struct tm用于保存日历时间的各个组成部分。


一、clock_t和time_t的定义

clock_t定义:

#ifndef __CLOCK_T_DEFINED
#define __CLOCK_T_DEFINED    // 避免重复定义 clock_t 
typedef long clock_t;   //clock_t是一个长整形数
#endif

time_t定义:

#ifndef __TIME_T
#define __TIME_T     //避免重复定义 time_t 
typedef long  time_t;    //时间值time_t 是一个长整型
#endif

二、struct tm结构体

1.结构体

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()为负。*/  
long int tm_gmtoff;	 /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/   
const char *tm_zone;     /*当前时区的名字(与环境变量TZ有关)*/  
}; 

2.应用

可以使用的函数是gmtime()和localtime()将time()获得的日历时间time_t结构体转换成tm结构体。
代码:

#include 
#include 
  int main(void)
  {
     
  struct tm *ptr;
  time_t nt;
  nt =time(NULL);
  ptr=localtime(&nt);
  printf("second:%d\n",ptr->tm_sec);
  printf("minute:%d\n",ptr->tm_min);
  printf("hour:%d\n",ptr->tm_hour);
  printf("mday:%d\n",ptr->tm_mday);
  printf("month:%d\n",ptr->tm_mon+1);
  printf("year:%d\n",ptr->tm_year+1900);
  return 0;
  }

结果:

second:20
minute:13
hour:14
mday:22
month:8
year:2020

三、时间函数

列举几个简单的时间函数:

1.clock_t clock(void)

clock函数返回程序开始执行后占用的处理器时间。如果无法获取处理器时间,则返回值为-1。

2.time_t time(time_t *tp)

time函数返回当前日历时间。如果无法获取日历时间,则返回值为-1。

3.double difftime(time_t time2,time_t time1)

Difftime函数返回time2-time1的值(以秒为单位。

4.time_t mktime(struct tm *tp)

mktime函数将*tp中的当地时间转换为与time表示方式相同的日历时间。

你可能感兴趣的:(c,笔记,c语言)