Неверная хронология Android NDK (std :: chrono :: high_resolution_clock)

Код ниже не печатает эпоху.

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 toolchain была 4.8!

РЕДАКТИРОВАТЬ:

Изменен std::chrono::high_resolution_clock в std::chrono::system_clock и он сработал. Зачем?

Ответы

Ответ 1

system_clock похож на часы (вещь на вашем запястье, прежде чем смартфоны захватили планету). Он может рассказать вам время суток. И поскольку никакие часы не сохраняют идеальное время, иногда он запрашивает другие часы, в какое время это происходит, и делает небольшие корректировки для себя, чтобы оставаться точным.

steady_clock - как секундомер. Это здорово, когда вы набираете бегун на коленях или определяете свою функцию. Он никогда не корректирует себя, но стремится отмечать одну секунду в секунду, насколько это возможно. Но он не имеет ни малейшего представления о том, что такое время дня или даже какой день в году.

high_resolution_clock также не имеет отношения ни к какому-либо человеческому календарю, ни к системе времени, и ему разрешено быть typedef либо в system_clock либо в steady_clock. И на практике он всегда является typedef для одного из этих часов.

В вашей системе high_resolution_clock, очевидно, тот же тип, что и steady_clock.