2017-05-09 209 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