通过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()函数来计算以毫秒为单位的时间差,从而在代码中实现自己所需的功能。

       

 

 

 

 

 

 

       

Logo

更多推荐