Android NDK计时时代不正确(std :: chrono :: high_resolution_clock)

时间:2015-03-12 08:54:34

标签: android c++ android-ndk chrono

以下代码不会打印纪元。

typedef std::chrono::high_resolution_clock Clock;
typedef std::chrono::milliseconds Milliseconds;
auto res = std::chrono::duration_cast<Milliseconds>(Clock::now().time_since_epoch()).count();
std::stringstream ss;
ss << res;
printf(">>>>>>>>>>> TimeUtiles::getTimestamp %s", ss.str().c_str());

我使用NDK r9d并选择了NDK工具链版本为4.8!

编辑:

std::chrono::high_resolution_clock更改为std::chrono::system_clock并且有效。为什么?

1 个答案:

答案 0 :(得分:6)

system_clock就像一块手表(智能手机占领地球之前腕上的东西)。它可以告诉您一天中的时间。而且由于没有一个时钟能保持完美的时间,它有时会问另一个时钟是什么时间,并且对其自身进行微小的调整以保持准确。

steady_clock就像秒表。这对计时跑步者一圈或计时您的功能非常有用。它从不进行自我调整,而是尽力将每秒的秒数标记为最佳。但它不知道一天中的什么时间,甚至一年中的哪一天。

high_resolution_clock也与任何人类日历或时间系统都不相关,并且可以是typedefsystem_clock的{​​{1}}。实际上,它始终是其中一个时钟的steady_clock

在您的系统上,typedef的类型显然与high_resolution_clock相同。