通过gettimeofday函数只能获取到秒和微秒,获取到的秒是从1970年1月1日到当前的时间,而获取到的微秒只有六位数,所以要想得到以毫秒为单位的系统时间须将它俩整合起来。
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <string.h>
long getCurrentTimeMsec()
{
int i = 0;
long msec = 0;
char str[20] = {0};
struct timeval stuCurrentTime;
gettimeofday(&stuCurrentTime, NULL);
sprintf(str, "%ld%03ld", stuCurrentTime.tv_sec, (stuCurrentTime.tv_usec)/1000);
for (i = 0; i < strlen(str); i++)
{
msec = msec * 10 + (str[i] - '0');
}
return msec;
}
int main()
{
printf("msec:%ld\n", getCurrentTimeMsec());
return 0;
}
stuCurrentTime.tv_sec获取到的是秒,(stuCurrentTime.tv_usec)/1000获取到的是毫秒,通过sprintf()函数将它们合成以毫秒单位的时间,但此时它们是字符串。所以通过for()循环里边的msec= msec* 10 + (str[i] - '0')语句,将字符串转换成长整型,即可以得到以毫秒为单位的时间。如此,还可以通过getCurrentTimeMsec()函数来计算以毫秒为单位的时间差,从而在代码中实现自己所需的功能。