获得时间以来,以毫秒为单位,最好使用C ++ 11 chrono

我想要的只是从毫秒到纪元的时间,并把它存储在一个无符号的长整数。

我发现这个相关的问题 。 但说实话,这不是执行如此简单任务的最简单的方法,是吗? 我希望有更简单的东西,但在std :: chrono引用中找不到任何东西。 任何build议是最受欢迎的。 我不一定要使用std::chrono ,但我希望它是平台独立的。

 unsigned long milliseconds_since_epoch = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); 

虽然,特别是因为你想要平台独立性,所以把unsigned longreplace成更可能足够大的types会更好:

  • (unsigned) long long
  • std::(u)int64_t
  • std::chrono::milliseconds::rep
  • auto

对我来说,这清楚地表明,你正在冒着精度损失的风险(类似于整数除法) 并且你离开了types系统的安全性(通过除以键入的时间来给出无单位的数字)。 然而,正如评论中所表明的那样,有些人会说,任何试图摆脱型号安全的企图都应该伴随着故意使代码看起来危险的尝试。 如果你需要处理持有这种信念的人,那么使用duration_cast可能会更简单,而不是进入关于不相关文体select的争论:

 unsigned long milliseconds_since_epoch = std::chrono::duration_cast<std::chrono::milliseconds> (std::chrono::system_clock::now().time_since_epoch()).count();