代码之家  ›  专栏  ›  技术社区  ›  drahnr

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

  •  1
  • drahnr  · 技术社区  · 14 年前

    我将要从一个文件中读取数据,该文件从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") 
    

    谁知道我的缺点在哪里?谢谢你的提示和帮助。

    编辑更改黑客远离错误从1E6乘法到1E6

    1 回复  |  直到 14 年前
        1
  •  3
  •   gnud    14 年前

    QDateTime::addDays() QDateTime::addMSecs() QDateTime . 你只是把返回值扔掉了。

    documentation