1

1970年1月1日からの時間をナノ秒単位で保存したファイルからデータを読み取ろうとしています。私の問題は、それをQDateTimeオブジェクトに読みたいのですが、それは私が望むように単に機能せず、Qtドキュメントも私を助けませんでした。

注:ミリ秒ラスターは私の目的には十分ですここに私の現在のアプローチ:

void setDateTime(qint64 &ns)
{
    _datetime.setDate(QDate(1970,1,1));
    _datetime.setTime(QTime(0,0,0,0));
    ns /= 1000; //ns are now ms
    qDebug() << "| ms = " << ns;
    qDebug() << "| days = " << static_cast<int>(ns%(60*60*24*1E6));
    _datetime.addDays( static_cast<int>(ns%(60*60*24*1000)) );
    _datetime.addMSecs( ns - ((ns/(60*60*24*1000))*60*60*24*1E6) );
    qDebug() << "| dt = " << _datetime;
}

結果は常に

 | dt =  QDateTime("Thu Jan 1 00:00:00 1970") 

確かに間違っています

誰かが私の欠陥がどこにあるかわかりますか?ヒントとヘルプをありがとう。

編集:setTime_tは明らかに私が望んでいたものであり(ミリ秒の解像度を除く)、それは期待どおりに機能しますが、上記のアプローチが機能しない理由は本当に興味があります。

変更されたハックアウェイバグを1E6乗法から1E6に編集します

4

1 に答える 1

3

QDateTime::addDays()およびQDateTime::addMSecs()は、新しいを返すconst関数QDateTimeです。単に戻り値を捨てているだけです。

そして、はい、これはドキュメントに書かれています。

于 2010-06-30T22:23:38.447 に答える