如何在 C 中格式化时间戳
How to format a time stamp in C
我正在尝试弄清楚如何使用下面的函数获取当前时间戳,但我想对其进行格式化,以便它在输出时显示 4:30:23 之类的时间。最后我想减去我运行算法前后的时间戳。
struct timeval FindTime() {
struct timeval tv;
gettimeofday(&tv,NULL);
return tv;
}
int main() {
printf("%ld\n",FindTime());
return0;
}
当前输出格式:
1456178100
继续阅读 strftime。
我猜你想要 %T
?
这可能是您需要的吗?
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
struct setClock{
int hour;
int minutes;
int seconds;
};
struct setClock currTime(void);
void timeCheck(struct setClock myClock[2]);
int main(void){
struct setClock myClock[2];
myClock[0] = currTime();
printf("Start Time: %d:%d:%d\n\n", myClock[0].hour, myClock[0].minutes, myClock[0].seconds );
sleep(5);
/* CODE HERE */
myClock[1] = currTime();
printf("End Time: %d:%d:%d\n", myClock[1].hour, myClock[1].minutes, myClock[1].seconds );
timeCheck(myClock);
return 0;
}
struct setClock currTime(void){
struct setClock ret;
struct tm *tm;
time_t myTime;
myTime=time(NULL);
tm=localtime(&myTime);
ret.hour = tm->tm_hour;
ret.minutes = tm->tm_min;
ret.seconds = tm->tm_sec;
return ret;
}
void timeCheck(struct setClock myClock[2]){
int hour;
int minute;
int second;
time_t end, start;
double diff;
start = (time_t)((myClock[0].hour * 60 + myClock[0].minutes) * 60 + myClock[0].seconds) ;
end = (time_t)((myClock[1].hour * 60 + myClock[1].minutes) * 60 + myClock[1].seconds) ;
if( end < start ){
end += 24 * 60 * 60 ;
}
diff = difftime(end, start);
hour = (int) diff / 3600;
minute = (int) diff % 3600 / 60;
second = (int) diff % 60;
printf("\n\n");
printf("The elapsed time is %d Hours - %d Minutes - %d Seconds.\n", hour, minute, second);
}
输出:
Start Time: 23:19:18
End Time: 23:19:23
The elapsed time is 0 Hours - 0 Minutes - 5 Seconds
您可以将此代码与 String 函数结合使用来捕捉时间
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <String.h>
int main()
{
time_t timeLine;
struct tm * timeInfo;
time ( &timeLine );
timeInfo = localtime ( &timeLine );
printf ( "%s", asctime (timeInfo) );
return 0;
}
我正在尝试弄清楚如何使用下面的函数获取当前时间戳,但我想对其进行格式化,以便它在输出时显示 4:30:23 之类的时间。最后我想减去我运行算法前后的时间戳。
struct timeval FindTime() {
struct timeval tv;
gettimeofday(&tv,NULL);
return tv;
}
int main() {
printf("%ld\n",FindTime());
return0;
}
当前输出格式: 1456178100
继续阅读 strftime。
我猜你想要 %T
?
这可能是您需要的吗?
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
struct setClock{
int hour;
int minutes;
int seconds;
};
struct setClock currTime(void);
void timeCheck(struct setClock myClock[2]);
int main(void){
struct setClock myClock[2];
myClock[0] = currTime();
printf("Start Time: %d:%d:%d\n\n", myClock[0].hour, myClock[0].minutes, myClock[0].seconds );
sleep(5);
/* CODE HERE */
myClock[1] = currTime();
printf("End Time: %d:%d:%d\n", myClock[1].hour, myClock[1].minutes, myClock[1].seconds );
timeCheck(myClock);
return 0;
}
struct setClock currTime(void){
struct setClock ret;
struct tm *tm;
time_t myTime;
myTime=time(NULL);
tm=localtime(&myTime);
ret.hour = tm->tm_hour;
ret.minutes = tm->tm_min;
ret.seconds = tm->tm_sec;
return ret;
}
void timeCheck(struct setClock myClock[2]){
int hour;
int minute;
int second;
time_t end, start;
double diff;
start = (time_t)((myClock[0].hour * 60 + myClock[0].minutes) * 60 + myClock[0].seconds) ;
end = (time_t)((myClock[1].hour * 60 + myClock[1].minutes) * 60 + myClock[1].seconds) ;
if( end < start ){
end += 24 * 60 * 60 ;
}
diff = difftime(end, start);
hour = (int) diff / 3600;
minute = (int) diff % 3600 / 60;
second = (int) diff % 60;
printf("\n\n");
printf("The elapsed time is %d Hours - %d Minutes - %d Seconds.\n", hour, minute, second);
}
输出:
Start Time: 23:19:18
End Time: 23:19:23
The elapsed time is 0 Hours - 0 Minutes - 5 Seconds
您可以将此代码与 String 函数结合使用来捕捉时间
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <String.h>
int main()
{
time_t timeLine;
struct tm * timeInfo;
time ( &timeLine );
timeInfo = localtime ( &timeLine );
printf ( "%s", asctime (timeInfo) );
return 0;
}