Qt QDate从1970年1月1日起的纳秒

时间:2010-06-30 21:53:11

标签: qt datetimeoffset qdatetime

我即将从一个文件中读取数据,该文件存储的时间是从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分辨率),并且按预期工作,但我很好奇为什么上述方法不起作用。

编辑从1E6乘法到1E6

的更改黑客攻击错误

1 个答案:

答案 0 :(得分:3)

QDateTime::addDays()QDateTime::addMSecs()是const函数,返回新的QDateTime。你只是抛弃了返回值。

是的,这是用documentation写的。