gettimeofday及其相关时间函数

1gettimeofday函数:获取到当前时间的秒数。

该函数的头文件在/usr/include/sys/time.h头文件中。

函数原型:int gettimeofday(struct timeval*tv, struct timezone *tz);

用到两个结构体: timeval  timezone

这两个结构体定义在/usr/include/linux/time.h头文件中。

 

 

 

一秒=1000000微秒

 

 

 

 函数作用:会把得到从197011000秒到现在的秒数返回到第一个参数指向的结构体中,第二个参数是关于时区,如果不考虑填入NULL

函数成功返回0,否则返回-1错误代码存于errno。

可以利用该函数来计算一个程序的运行时间,只需在程序前后调用该函数,并且后来的函数时间减去开始的函数时间就可以。注意单位的转变。

 

2、time()函数:获取到当前时间的秒数。

time函数声明:time_t time(time_t *t)

头文件:<time.h>

由声明可知,这里有一个特殊类型 time_t类型 ;相当于 long int 类型。函数参数为time_t类型变量的地址。

eg:

 

 

 time函数接收time_t类型的变量地址为参数,计算返回19701100:00:00 到现在的秒数,并存储在变量中。在实际使用中,一般希望得到的是标准的时间格式,现在只得到了秒数,接下来应该把得到的秒数转换为时间格式,所以就需要用到localtime()和strftime()函数。只有这些组合使用才能得到标准格式的时间。

特殊:timeNULL);该函数会返回从1970到现在的秒数,但不保存。

 

3localtime函数:返回指向tm结构的指针,并且按输入的秒数填写结构。

函数声明:struct tm *localtime(const time_t *timer)

由此可见:该函数接收一个time_t类型的变量地址。

该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息

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结构的指针,并且按输入的秒数填写结构。localtime函数会把秒数划分为各个点时间,但是这样想要输出的话只能输出多个类型;此时应该用到strftime()函数来整合这个被填充了的tm结构;并输出。

asctime函数:

该函数接收一个指向tm的指针,并且把tm结构体的内容转换格式,返回一个指向字符串的指针。

 

 

 

 

 4、strftime()和strptime()函数

strptime()函数:把时间格式字符串,按一定格式存储到tm结构体中。 

函数声明:char *strptime(const char *buf,const char *format,struct tm *timeptr)

该函数有三个参数:

  • 时间格式字符串,
  • 时间格式。
  • tm 结构体的指针    

例子: struct   tm   tm_ptr 

    strptime("2020-07-29 00:00","%Y-%m-%d %H:%M",&tm_ptr);  该函数的作用是,把第一个参数对应的时间字符串,存储到tm_ptr结构体中,第二个参数格式要和第一个参数的格式一致。然后再通过strftime()函数转换成想要的时间格式。

  

strftime函数:

函数声明:size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

该函数有四个参数,

  • str -- 这是指向目标数组的指针,用来复制产生的 C 字符串。
  • maxsize -- 这是被复制到 str 的最大字符数。
  • format -- 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值
  • timeptr -- 这是由localtime函数返回的指向tm结构体的指针。

该函数的作用是,把timeptr指向的结构体内容,根据format格式转换,并且存储在str中。

 

 

 

 

 

 

posted @ 2019-10-09 13:44  crine  阅读(12421)  评论(0编辑  收藏  举报