在工作中 突然用到时间函数,一查才发现localtime和localtime_r原来差别这么大。
1. loacltime 不可重入,localtime_r可重入。
2. localtime使用两次,前面的值会被重写。
#include <time.h>
#include <stdio.h>
int main(int argc,char *argv)
{
char snow[50]={0},send[50]={0};
time_t now = time(NULL);
time_t end = now+3600;
struct tm tnow = {0}, tend = {0};
localtime_r(&now, &tnow);
localtime_r(&end, &tend);
strftime(snow,50,"%H:%M:%S",&tnow);
strftime(send,50,"%H:%M:%S",&tend);
printf("%s \n",snow);
printf("%s \n",send);
}
结果:
[root@localhost C++]# ./a.out
17:25:49
18:25:49
#include <time.h>
#include <stdio.h>
int main(int argc,char *argv)
{
char snow[50]={0},send[50]={0};
time_t now = time(NULL);
time_t end = now+3600;
struct tm *tnow=NULL, *tend =NULL;
tnow = localtime(&now);
tend = localtime(&end);
strftime(snow,50,"%H:%M:%S",tnow);
strftime(send,50,"%H:%M:%S",tend);
printf("%s \n",snow);
printf("%s \n",send);
}
18:33:25
18:33:25