实例详细求解Linux下C获取时间函数的代码。
一.时间
头文件:
#包含
原型:
time_ttime(time_t*t ) )。
time_t的定义:
typedef __darwin_time_t time_t;
typedef long __darwin_time_t;
返回值:编码还原时间(utc )时间1970年1月1日00时00分00秒(也称为Linux系统上的Epoch时间)当前时间之前的秒数
例: 1
#包含
#包含
int main () )
{
time_t seconds;
seconds=time(null;
printf (从1970-01-01开始的小时数=%LD(n ),seconds/3600 );
返回(0;
}
二. localtime localtime_r
头文件:
#包含
原型:
struct TM * local time (const time _ t * timep ) ) )。
原型:
struct TM * local time _ r (const time _ t * timep,struct tm *result );
结构体tm
struct tm {
int tm_sec; /*seconds(0-60 ) /
int tm_min; /*minutes(0-59 ) ) /
int tm_hour; /*Hours(0-23 ) /
int tm_mday; /*dayofthemonth(1-31 ) ) /
int tm_mon; /*month(0-11 ) /
int tm_year; /* Year - 1900 */
int tm_wday; /*Dayoftheweek(0-6,Sunday=0) ) /
int tm_yday;/*日期年(0- 365,1 Jan=0) ) /
int tm_isdst; /* Daylight saving time */
/*夏时制标识符,在实施夏时制时,tm_isdst为正。 不实施夏令时时,tm_isdst为0; 如果不知道情况,tm_isdst )为负。 */
(;
localtime与localtime_r的区别
localtime并不是可以重新输入localtime_r
示例2 :
#包含
#包含
#包含
#包含
intmain(intargc,char *argv[] ) ) ) ) ) ) ) ) ) int main ) ) ) int main ) ) ) int argc,char *argv[] ) ) ) ) ) ) ) int
{
time_ttnow=time(null;
time_t tEnd=tNow 1800;
//注意以下两行之间的差异
sructTM*PTM=localtime(tnow );
sructTM*ptmend=localtime(tend );
char szTmp[50]={0};
strftime(SZtmp,50,' %H:%M:%S ',ptm );
char szEnd[50]={0};
strftime(szend,50,' %H:%M:%S ',ptmEnd );
printf('%s/n ',szTmp );
printf('%s/n ',szEnd );
返回0;
}
最后得出的结果是:
20:30:32
20:30:32
示例3 :
#包含
#包含
#包含
#包含
intmain(intargc,char *argv[] ) ) ) ) ) ) ) ) ) int main ) ) ) int main ) ) ) int argc,char *argv[] ) ) ) ) ) ) ) int
{
time_ttnow=time(null;
time_t tEnd=tNow 1800;
struct tm ptm={ 0 };
struct tm ptmEnd={ 0 };
localtime_r(tnow,ptm );
localtime_r(tend,ptmEnd;
char szTmp[50]={0};
strftime(SZtmp,50,' %H:%M:%S ',ptm );
char szEnd[50]={0};
strftime(szend,50,' %H:%M:%S ',ptmEnd );
printf(%s(n ),szTmp );
printf(%s(n ),szEnd );
返回0;
}
最后得出的结果是:
20:03:21
20:33:21
三. gettimeofday
头文件:
#包含
原型:
int gettime of day (struct timeval * TV,struct timezone *tz ) )。
tv :保存获取时间结果的结构
struct timeval{
long int tv_sec; //秒数
long int tv_usec; //微秒数
}
tz :为了保存时区的结果
struct timezone{
int tz_minuteswest; /*格林威治标准时间对西方的时差*
int tz_dsttime; /*DST时间的修正方式*
}
返回值:正常返回0,失败返回-1,错误代码保存在errno中
四. mktime
头文件:
#包含
原型:
time_tMkTime(structTM*TM ) )。
返回值:自1970年1月1日以来持续时间的秒数。 如果发生错误,则返回-1。
示例4 :
#包含
#包含
入主(void ) )。
{
time_t timep;
struct tm* p;
时间(timep );
printf(time ) ) :%d(n ),timep;
p=localtime(timep );
timep=MkTime(p;
printf(time )-local time (mktime ) ) :%dn ),timep );
返回0;
}
输出:
时间(:1541246772
time ()-local time (mktime ) ) :1541246772