红联Linux门户
Linux帮助

Linux下的时间函数

发布时间:2014-12-12 09:40:27来源:linux网站作者:joker0910

做数据库读写操作,文件操作,数据传输,经常需要手动打时间标记,获取时间的函数自然要了然于心。

time_t 这个类型就是用来存储1970年到现在经过了多少秒,需要更精确一些,可以用timeval,它精确到微秒。

struct timeval 

long tv_sec;  //second  
long ttv_usec; // micro second  
};


而time_t 则是一个long类型。

#ifndef __TIME_T  
#define __TIME_T  
typedef long     time_t;   
#endif


直接存储年月日的是这样一个结构:

struct tm 

int tm_sec; 
int tm_min; 
int tm_hour; 
int tm_mday; 
int tm_mon; 
int tm_year;  //从1900到现在的年数  
int tm_wday;  //一周中的第几天   
int tm_yday;   //今年1月1日到目前的天数,范围0-365  
int tm_isdst;  //日光节约时间的旗标  
};


时间函数包含在如下头文件中:

#include<time.h>
#include <time.h>  
char *asctime(const struct tm* timeptr);   //将结构中的信息转换为真实世界的时间,以字符串的形式显示  
char *ctime(const time_t *timep);    //将timep转换为真是世界的时间,以字符串显示,它和asctime不同就在于传入的参数形式不一样  
double difftime(time_t time1, time_t time2);   //返回两个时间相差的秒数  
int gettimeofday(struct timeval *tv, struct timezone *tz);  //返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用  
struct tm* gmtime(const time_t *timep);   //将time_t表示的时间转换为没有经过时区转换的UTC时间,是一个struct tm结构指针  
stuct tm* localtime(const time_t *timep);   //和gmtime类似,但是它是经过时区转换的时间。  
time_t mktime(struct tm* timeptr);   //将struct tm 结构的时间转换为从1970年至今的秒数  
time_t time(time_t *t);     //取得从1970年1月1日至今的秒数。