感谢支持
我们一直在努力

有关Linux时间函数的总结

首先搞清楚两个概念:


1、日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数。


2、在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:


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为正。www.linuxidc.com 不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
        };


所以  现在详解以下几个函数:


1、asctime(将时间和日期以字符串格式表示)


char * asctime(const struct tm * timeptr):


函数说明
asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n”


返回值
若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。


2、char *ctime(const time_t *timep);
(将时间和日期以字符串格式表示):


函数说明:将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。


3、int gettimeofday(struct timeval * tv , struct timezone * tz ):


函数说明:gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz结构中。


timeval结构:



struct timeval{
long tv_sec; /*秒*/
long tv_usec; /*微秒*/
};


timezone结构:


struct timezone{
int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/
int tz_dsttime; /*日光节约时间的状态*/
};


4、struct tm*gmtime(const time_t*timep);


函数说明:


gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,www.linuxidc.com 然后将结果由结构tm返回。


5、struct tm *localtime(const time_t * timep);


函数说明:将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。此函数返回的时间日期已经转换成当地时区。


6、mktime(将时间结构数据转换成经过的秒数)


time_t mktime(strcut tm * timeptr);



函数说明:mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。


7、settimeofday(设置目前时间)


int settimeofday ( const struct timeval *tv,const struct timezone *tz);



函数说明:settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意,只有root权限才能使用此函数修改时间。


8、time(取得目前的时间)


time_t time(time_t *t);


函数说明此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

赞(0) 打赏
转载请注明出处:服务器评测 » 有关Linux时间函数的总结
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏