Qt QDateTime自1970年1月1日起纳秒

Qt QDateTime自1970年1月1日起纳秒,qt,datetimeoffset,qdatetime,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; //n

我将从一个文件中读取数据,该文件从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;
}
这肯定是错误的

谁能说出我的缺点在哪里?谢谢你的提示和帮助

Edit:setTime_t显然是我想要的(除了毫秒分辨率),它可以按预期工作,但我真的很好奇为什么上面的方法不起作用

Edit将除掉的bug从1E6乘法修改为1E6

QDateTime::addDays()
QDateTime::addMSecs()
是返回新的
QDateTime
的常量函数。你只是把返回值扔掉


是的,这是写在。

非常感谢你,我昨天简直太累了。。。愚蠢的失败:>请注意,1000ns是1us(微秒),QDateTime方法使用毫秒。所以你可能应该把ns除以1000000,而不是od1000。你是对的,但这在我的代码中是固定的,只是忘了在“hackaway”中更改
 | dt =  QDateTime("Thu Jan 1 00:00:00 1970")