将时间戳转换为纳秒(Qt)

时间:2017-05-09 14:30:06

标签: c++ qt timestamp

我想在Qt中做这样的事情:给定当前时间戳将其转换为纳秒。

当前的解决方案并没有给我真正的纳秒值,在时间戳值之后只有0!有人可以帮助我,我在Qt中找不到这样的东西。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果使用C ++ 11编译器,则可以使用std::chrono函数。没有Qt,但它会起作用。

#include <iostream>
#include <chrono>

int main()
{
  std::chrono::time_point<std::chrono::system_clock> timestamp =
    std::chrono::system_clock::now();

  const auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>
    (timestamp.time_since_epoch()).count();

  std::cout << ns << std::endl;

  return 0;
}

答案 1 :(得分:-1)

如果您希望当前时间戳以纳秒为单位,QDateTime::currentMSecsSinceEpoch() * 1000000可以解决问题。

答案 2 :(得分:-1)

您正在寻找QDateTime课程。您可以将给定的日期时间转换为自纪元以来的msecs,反之亦然。

要将日期时间转换为msecs,请使用toMSecsSinceEpoch

QDateTime currentDateTime = QDateTime::currentDateTime();
std::cout<< "Current DateTime : "
     << currentDateTime.toString().toStdString()
     << "\nCurrent DateTime in Milliseconds since epoch :\n"
     << currentDateTime.toMSecsSinceEpoch()
     << std::endl;    

要转换为nanosecs,只需将msecs转换为nanosecs:

const qlonglong nanosecs = currentDateTime.toMSecsSinceEpoch() * 1000000:

副主席,fromMSecsSinceEpoch

const qlonglong nanosecs = 5555555;
QDateTime myDateTime = QDateTime::fromMSecsSinceEpoch(nanosecs / 1000000);