文章目录
前言
在linux系统里面,我们有时候需要获取当前时间,用它来统计程序运行的时间,或者显示标准格式的日期和时间等等。那么怎么获取时间呢?下面就来了解一下。
Linux的API
获取时间
time函数
首先看看它在man 第2册中的介绍:
NAME
time - get time in seconds
SYNOPSIS
#include <time.h>
time_t time(time_t *tloc);
DESCRIPTION
time() returns the time as the number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
If tloc is non-NULL, the return value is also stored in the memory pointed to by tloc.
RETURN VALUE
On success, the value of time in seconds since the Epoch is returned. On error, ((time_t) -1) is returned, and errno is set appro‐priately.
概括一下,如下表:
函数原型 | time_t time(time_t *tloc); | 备注 |
---|---|---|
要包含的头文件 | #include <time.h> | |
形参 | time_t *tloc | 指针非空就把时间值放入指针指向的内存;指针为空就忽略 |
返回值 | 成功:当前时间(单位为秒)/ 失败:((time_t) -1) | 返回的时间是从1970-01-01 00:00:00 +0000 (UTC)开始算起间隔的秒数 |
再啰嗦一遍: time函数,返回自Epoch以来的秒数,这是肯定的,同时可以接受一个time_t*类型的指针作为形参,执行该函数将会把这个秒数放入到指针所指向的位置 ,如果为NULL当然不用管了;
gettimeofday函数
函数原型:
include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
第一个参数 是一个结构体:
struct timeval {
time_t tv_sec; /* seconds /
suseconds_t tv_usec; / microseconds */
};
里面有秒数和微秒数,都是自Epoch以来的秒数。
第二个参数是一个时区结构,已经过时了,所以tz参数通常应该指定为NULL。
该函数会把自Epoch以来的秒数和微秒数放到tv结构体。
函数调用成功返回0,失败返回-1,并设置errno。