Frage

Ich bin über Daten aus einer Datei zu lesen, die es an der Zeit in Nanosekunden aus dem 1.1.1970 gespeichert hat. Mein Problem ist, ich es zu einem QDateTime Objekt lesen will, aber es funktioniert einfach nicht, wie ich will es und die Qt-Dokumentation nicht mir entweder geholfen hat.

Hinweis: Millisekunden Raster für meine Zwecke ausreichend ist Hier ist mein aktueller Ansatz:

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;
}

das Ergebnis ist immer

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

, die sicherlich falsch

Kann jemand sagen, wo mein Fehler ist? Vielen Dank für alle Tipps und Hilfe.

Edit: setTime_t ist offensichtlich, was ich (mit Ausnahme ms Auflösung) wollte, und das funktioniert wie erwartet, aber ich bin wirklich neugierig, warum der obige Ansatz nicht funktioniert

.

Bearbeiten geändert Hack-away Fehler von 1E6 multiplikative zu 1E6

War es hilfreich?

Lösung

QDateTime::addDays() und QDateTime::addMSecs() sind const-Funktionen ein neues QDateTime zurück. Sie sind einfach throwning den Rückgabewert entfernt.

Und ja, wird dies geschrieben in der Dokumentation .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top