2017-05-09 211 views
0

我愿意做这样的事情在Qt的纳秒(QT):鉴于当前时间戳其转换为纳秒。转换时间戳

当前解决方案不给我真正的毫微秒值,时间戳值后才零!有人可以帮助我,我在Qt中找不到这样的东西。

谢谢你的帮助。

+0

你有什么迄今所做? – Badda

+1

时间戳是即时的,纳秒是持续时间。如果你想要纳秒,那么这个时代的起点是什么?今天开始,1970年1月1日,公元0年? – Neil

+1

[QElapsedTimer :: nsecsElapsed()](http://doc.qt.io/qt-4.8/qelapsedtimer.html) – LPs

回答

0

如果你想在纳米秒当前时间戳,QDateTime::currentMSecsSinceEpoch() * 1000000的伎俩。

+0

那么,它仍然有毫秒的精度,但有六个额外的零。 – cbuchart

+0

在原来的职位,该OP没有给出细节,他希望经过纳秒,只是毫秒时间戳纳秒转换... – Tryum

+0

遗憾的错过理解,但有的话,@cbuchart说是让纳秒,而不是零在时间戳值 – kamal

-1

您正在寻找QDateTime类。自从时代或反之后,您可以将给定的日期时间转换为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,刚刚从毫秒转换为nanosecs:

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

反之亦然,fromMSecsSinceEpoch

const qlonglong nanosecs = 5555555; 
QDateTime myDateTime = QDateTime::fromMSecsSinceEpoch(nanosecs/1000000); 
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; 
} 
+0

之后这正是我要求C++ 11的原因;) – Tryum