Qt QDateTime nanosegundos desde 1/1/1970
-
01-10-2019 - |
Pregunta
Estoy a punto de leer datos de un archivo que ha almacenado que de vez en nanosegundos desde 1/1/1970. Mi problema es que quiero leer en un objeto QDateTime
, pero simplemente no funciona como yo quiero que la documentación de Qt y no me ayuda tampoco.
Nota: milisegundos trama es suficiente para mis propósitos Aquí mi enfoque actual:
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;
}
el resultado es siempre
| dt = QDateTime("Thu Jan 1 00:00:00 1970")
que es sin duda mal
Puede cualquiera tell donde mi defecto es? Gracias por cualquier consejo y ayuda.
Editar: setTime_t es, obviamente, lo que quería (excepto para la resolución de milisegundos), y que funciona como se esperaba, pero estoy realmente curioso por qué el enfoque anterior no funciona
.Editar cambió fallo hack-lejos de 1E6 a 1E6 multiplicativo
Solución
QDateTime::addDays()
y QDateTime::addMSecs()
son funciones const regresan una nueva QDateTime
. Usted es simplemente throwning el valor de retorno de distancia.
Y sí, esto está escrito en el documentación .