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

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top