1

我即将从 1970 年 1 月 1 日开始以纳秒为单位存储时间的文件中读取数据。我的问题是我想将它读入一个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 显然是我想要的(毫秒分辨率除外),并且按预期工作,但我真的很好奇为什么上述方法不起作用。

编辑将 hack-away 错误从 1E6 乘法更改为 1E6

4

1 回答 1

3

QDateTime::addDays()并且QDateTime::addMSecs()是 const 函数返回一个新的QDateTime. 你只是把返回值扔掉了。

是的,这是写在文档中的。

于 2010-06-30T22:23:38.447 回答