Qt QDateTime Nanosekunden von 1.1.1970
-
01-10-2019 - |
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
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 .