Я собираюсь прочитать данные из файла, в котором хранится время в наносекундах с 1 января 1970 года. Моя проблема в том, что я хочу прочитать его в объект QDateTime
, но он просто не работает так, как я хочу, и документация Qt мне тоже не помогла.
Примечание: для моих целей достаточно миллисекундного растра. Вот мой текущий подход:
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, очевидно, то, что я хотел (за исключением разрешения в миллисекундах), и это работает, как и ожидалось, но мне действительно любопытно, почему описанный выше подход не работает.
Редактировать измененную ошибку взлома с мультипликативной 1E6 на 1E6