質問

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

注:Millisecondsラスターは、ここでの私の目的で十分です。

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は明らかに私が望んでいたもの(MSEC解像度を除く)であり、それは期待どおりに機能しますが、上記のアプローチが機能しない理由は本当に興味があります。

編集ハックアウェイバグを1E6の乗算から1E6に変更しました

役に立ちましたか?

解決

QDateTime::addDays()QDateTime::addMSecs() const関数は新しいものを返しています QDateTime. 。あなたは単に返品値を捨てているだけです。

そして、はい、これはに書かれています ドキュメンテーション.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top