c ++ 11以微秒精度获得当前时间

时间:2015-03-26 00:37:22

标签: c++ c++11 ctime

我知道如何使用gettimeofday()在linux下获得微秒精度的当前时间。但是它不便携,不适用于MinGW。如何使用C ++ 11获得相同的功能?

#include <sys/time.h>
#include <cstdio>

int main(){
    timeval curTime;
    gettimeofday(&curTime, NULL);

    unsigned long micro = curTime.tv_usec;
    printf("micro is: %lu\n", micro);

    char buffer [30];
    //localtime is not thread safe
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime((const time_t*)&curTime.tv_sec));
    printf("buffer is: %s\n", buffer);

    char currentTime2[30] = "";
    sprintf(currentTime2, "%s.%06Lu", buffer, micro); 
    printf("currenttime is: %s\n", currentTime2);
}
它在Linux中运行良好,并且在MinGW下不打印缓冲区。这有什么不对?

2 个答案:

答案 0 :(得分:2)

std::chrono::high_resolution_clock。它是便携式的,但可能很糟糕。持续时间高精度:你甚至可以问它声称有多精确,但这可能不值得信赖。

boost具有可移植的时钟和时间库,可能更可靠。

答案 1 :(得分:2)

你试过std :: chrono :: high_resolution_clock吗? 你可能会发现这个article对于内部工作是一个有用的参考 C ++ 11 chrono库。