C++ - 我们如何在linux中获得毫秒时间戳?

Kin*_*ing 2 c++ gcc unix-timestamp c++11 c++-chrono

如何转换std::chrono::monotonic_clock::now()为毫秒并将其转换为长?

使用来自chrono的steady_clock或high_resolution_clock也是一样的.我已经看到了,std::chrono::duration_cast<std::chrono::milliseconds>但我只想要当前的时间戳,而不是任何持续时间的差距.

bet*_*ido 8

当前时间戳是根据某个时间点定义的(因此它是一个持续时间).例如,相对于Epoch的开头(1970年1月1日,在Unix中)获得时间戳是"典型的".你可以通过使用time_since_epoch():

namespace chr = std::chrono;

chr::time_point<chr::steady_clock> tp = chr::steady_clock::now();
std::cout << "hours since epoch: "
          << chr::duration_cast<chr::hours>(tp.time_since_epoch()).count()
          << '\n';
Run Code Online (Sandbox Code Playgroud)

要获得以毫秒为单位的值,您需要将其转换为std::chrono::milliseconds.

  • @King那也应该有效.`now()`为所有时钟返回一个`time_point`,所以你只需要改成时钟类型. (2认同)