linux 下时间相关的结构体定义及函数

1、基本概念:

1.UTC(universal time coordinated)称为协调时间时,是国际无线电咨询委员会制定和推荐的,以子午初线(经度0度)上的平均太阳时为依据,也就是英国伦暾的平均太阳时。

2.GMT(greenwitch mean time)格林威治平均时间,由于地球绕太阳的轨道不是圆形的,而且自转轴相对轨道面是倾斜的,导致UTC的表示不是很精确,为此提出了GMT时间,通过每一年或两年对UTC加一个闰秒完成修正。

3、Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。无论哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。日历时间返回自1970-1-1:00:00:00以来所经过的秒数累计值。

4、时区(本地时间)

为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。每个时区横跨经度15度,时间正好是1小时。最后的东、西第12区各跨经度7.5度,以东、西经180度为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。

2、时间相关的结构体

1. struct tm 结构体定义:

struct tm
{
    int tm_sec;    /* Seconds (0-60) */
    int tm_min;    /* Minutes (0-59) */
    int tm_hour;   /* Hours (0-23) */
    int tm_mday;   /* Day of the month (1-31) */
    int tm_mon;    /* Month (0-11) */
    int tm_year;   /* Year - 1900 */
    int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
    int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
    int tm_isdst;  /* Daylight saving time */
};

2. time_t 的定义:

typedef long time_t;

time_t表示的是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。它是一个长整型数。

3. struct timespec 结构体定义:

struct timespec 
{
    time_t tv_sec; // seconds,秒
    long tv_nsec;  // and nanoseconds,纳秒
};

4. struct timeval 结构体定义:

struct timeval
{
    time_t tv_sec;	// seconds,秒
    long tv_usec;	// microseconds,微秒
};

5. struct timezone 结构体定义

struct timezone 
{
 int tz_minuteswest;     // minutes west of Greenwich
 int tz_dsttime;         // type of DST correction
};

3、时间相关的函数

double difftime(time_t time1, time_t time0);  // 返回 time1 和 time2 之间相差的秒数 (time1-time2)。
time_t mktime(struct tm * timeptr);                // 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
time_t time(time_t * timer);                             // 计算当前日历时间,并把它编码成 time_t 格式。
char * asctime(const struct tm * timeptr);      // 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
char * ctime(const time_t *timer);                  // 返回一个表示当地时间的字符串,当地时间是基于参数 timer。
struct tm * gmtime(const time_t *timer);      // timer 的值被分解为 tm 结构,并用格林尼治标准时间(GMT)表示。   struct tm * localtime(const time_t * timer);    // timer 的值被分解为 tm 结构,并用本地时区表示。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)  // 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。

char *strptime(const char *s, const char *format, struct tm *tm);   //  将时间字符串s表示的时间解析到tm中

clock_t clock(void)  // 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值