Ответ 1
unsigned long milliseconds_since_epoch =
std::chrono::system_clock::now().time_since_epoch() /
std::chrono::milliseconds(1);
хотя, тем более, что вам нужна независимость от платформы, лучше заменить unsigned long
на тип, который скорее всего будет достаточно большим:
-
(unsigned) long long
-
std::(u)int64_t
-
std::chrono::milliseconds::rep
-
auto
Для меня это явно указывает на то, что вы рискуете потеря точности (по аналогии с целым делением) и что вы оставляете безопасность системы типов (делясь на типизированное время, чтобы дать единичное число), Однако, как показано в комментариях, некоторые люди скажут, что любая попытка отойти от безопасности типа должна сопровождаться преднамеренной попыткой сделать код опасным. Если вам нужно иметь дело с людьми, которые придерживаются этой веры, было бы проще использовать duration_cast
вместо того, чтобы вступать в аргумент о нерелевантных стилистических вариантах:
unsigned long milliseconds_since_epoch =
std::chrono::duration_cast<std::chrono::milliseconds>
(std::chrono::system_clock::now().time_since_epoch()).count();