UNIX操作系统根据计算机产生的年代把1970年1月1日作为UNIX纪元时间,将从该时间起的秒数用一个整数存放。
一、time_t别名
time_t用于表示时间类型,它是一个long类型的别名,在<time.h>文件中定义,表示从1970年1月1日0时0分0秒到现在的秒数。
typedef long time_t;
二、time()库函数
包含头文件:<time.h>
声明:time_t time(time_t *tloc);
两种调用方法:
time_t now = time(0);
time_t now; time(&now);
三、tm结构体
tm结构体在<time.h>中声明:
struct tm
{
int tm_year; //实际年份减去1900
int tm_mon; //取0~11
int tm_mday; //日期,取1~31
int tm_hour; //时,取0~23
int tm_min; //分,取0~59
int tm_sec; //秒,取0~59
int tm_wday; //星期,取0~6
int tm_yday; //从1月1日算起本年的天数,取0~365
int tm_isdst; //夏令时标识符,意义不大
}
四、localtime()与mktime()库函数
包含头文件<time.h>
localtime()用于吧time_t表示的时间转换为tm结构体表示的时间,maketime()相反。
localtime()函数不是线程安全的,localtime_r()是线程安全的。
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
time_t mktime(struct tm *tm);
五、gettimeofday()函数
用于获取1970年1月1日到现在的秒数和当前秒中已逝去的微秒数
包含头文件:<sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval{
time_t tv_sec;
suseconds_t tv_usec;
}
struct timezone{
int tz_minuteswest;
int tz_dsttime;
}
六、程序睡眠
包含头文件:<unistd.h>
unsigned int sleep(unsigned int seconds);
int usleep(useconds_t used);