我将从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显然是我想要的(MSEC分辨率除外),并且可以按预期工作,但是我真的很好奇为什么上述方法不起作用。

编辑将hack-away错误从1E6乘法到1E6

有帮助吗?

解决方案

QDateTime::addDays()QDateTime::addMSecs() const函数返回新的 QDateTime. 。您只是将回报值丢弃。

是的,这是写在 文档.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top