2017-05-09 53 views
0

私はQtでこのようなことをしたいと考えています:現在のタイムスタンプを与えてナノ秒に変換します。タイムスタンプをナノ秒(Qt)に変換する

現在のソリューションでは、実際のナノ秒の値は得られません。タイムスタンプの値の後にはゼロだけが入ります。誰かが私を助けることができる、私はQtでこれが何も見つからなかった。

ありがとうございました。

+0

あなたはこれまで何をしていますか? – Badda

+1

タイムスタンプは瞬間です。ナノ秒は継続時間です。ナノ秒が必要な場合は、エポックの出発点は何ですか?今日の始まり、1970年1月1日、0 AD? – Neil

+1

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

答えて

0

ナノ秒で現在のタイムスタンプが必要な場合は、QDateTime::currentMSecsSinceEpoch() * 1000000がそのトリックを行います。

+0

まあ、それでもミリ秒精度ですが、さらに6つのゼロがあります。 – cbuchart

+0

元の投稿では、OPは、彼が経過時間nsを望んでいるという詳細を与えていませんでした。ちょうどmsタイムスタンプをnsに変換しました... – Tryum

+0

ごめんなさい、理解できますが、はい、@cbuchartはナノ秒タイムスタンプの値の後 – kamal

-1

あなたはQDateTimeクラスを探しています。特定の日付時刻を、エポックまたはviceversaから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

関連する問題