在Linux中获取时间戳的“最便宜”方式(c ++)

时间:2015-04-01 08:22:15

标签: c++ linux timestamp

我想知道在Linux中获取时间戳的最便宜方式是什么(用c ++编写) 我认为这是一个准确的交易 - 所以我相信有超过1种可能性 我需要有几毫秒但不一定是microseconds,因此std::localtime不是一个选项而且gettimeofday可能太昂贵了。 (由于微秒精度)。

2 个答案:

答案 0 :(得分:1)

1:fprintf(stdout, "%u\n", (unsigned)time(NULL));

2:struct timeval tv; gettimeofday(&tv,NULL); tv.tv_sec // seconds tv.tv_usec // microseconds

3:std::time_t result = std::time(nullptr); std::cout << std::asctime(std::localtime(&result)) << result << " seconds since the Epoch\n";

4:

using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
    high_resolution_clock::now().time_since_epoch()
);`

答案 1 :(得分:0)

我建议使用ctime库和以下代码:

 std::time_t timestamp = std::time(nullptr);
    std::cout << std::asctime(std::localtime(&result))
              << result << " seconds since the Epoch\n";

这将返回&#34;结果&#34;变量自大纪元以来的秒数(相当直接)。有办法将其转换为可读格式,但正如您所说,这是昂贵的。获得该数字将非常有效,因为它只从系统中读取变量,而不是转换/连接和计算可读日期。