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

c++11以微秒精度获取当前时间,c++,c++11,ctime,C++,C++11,Ctime,我知道如何在linux下使用gettimeofday以微秒的精度获取当前时间。但是,它不可移植,并且不适用于MinGW。如何使用C++11获得相同的功能 #include <sys/time.h> #include <cstdio> int main(){ timeval curTime; gettimeofday(&curTime, NULL); unsigned long micro = curTime.tv_usec; p

我知道如何在linux下使用gettimeofday以微秒的精度获取当前时间。但是,它不可移植,并且不适用于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下不打印缓冲区。这里出了什么问题?

std::chrono::高分辨率时钟。它是便携式的,但可能很糟糕。将持续时间转换为高精度:你甚至可以问它声称有多精确,但这可能不可信

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

std::chrono::高分辨率时钟。它是便携式的,但可能很糟糕。将持续时间转换为高精度:你甚至可以问它声称有多精确,但这可能不可信


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

您尝试过std::chrono::高分辨率时钟吗? 您可能会发现这是一个有用的参考,为内部工作的
C++ 11计时库。

你有没有尝试过STD:: 您可能会发现这是一个有用的参考,为内部工作的
C++ 11计时库.< /p>特别是任何OS?Auto No.STD::SoCo::StulyLogCi::现在;您可以按您想要的分辨率进行提取。@red在ns中要求它不会给您提供ns分辨率。@Yakk这是真的,但它至少会以ns格式提供给您。使用HR时钟的问题在于,它不能保证与系统时钟绑定。如果分辨率较高,它会选择一个稳定的时钟,这使得获取一天中的时间不可靠。需要亚毫秒精度的时间通常是一个危险信号。通常,唯一需要如此精确的东西就是时间间隔。绝对时间仅在将该时间与其他时钟的时间进行比较时起作用,这意味着网络通信。网络通常有毫秒级的延迟。任何操作系统都有?auto now=std::chrono::system_clock::now;您可以按您想要的分辨率进行提取。@red在ns中要求它不会给您提供ns分辨率。@Yakk这是真的,但它至少会以ns格式提供给您。使用HR时钟的问题在于,它不能保证与系统时钟绑定。如果分辨率较高,它会选择一个稳定的时钟,这使得获取一天中的时间不可靠。需要亚毫秒精度的时间通常是一个危险信号。通常,唯一需要如此精确的东西就是时间间隔。绝对时间仅在将该时间与其他时钟的时间进行比较时起作用,这意味着网络通信。网络通常有毫秒级的延迟。我有那本书,仍然找不到获得时间的例子。高分辨率时钟不需要时间,因为我有那本书,仍然无法找到获取时间的示例。高分辨率时钟不需要计时