سؤال

أنا على وشك قراءة البيانات من ملف قام بتخزينه في الوقت النانوي من 1/1/1970. مشكلتي هي أنني أريد قراءتها على QDateTime كائن ، لكنه ببساطة لا يعمل كما أريد ، ولم يساعدني وثائق QT أيضًا.

ملاحظة: MilliSeconds Raster كافية لأغراضي هنا مقاربي الحالية:

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

هل كانت مفيدة؟

المحلول

QDateTime::addDays() و QDateTime::addMSecs() هل تعود وظائف const إلى جديدة QDateTime. أنت ببساطة ألقيت قيمة الإرجاع بعيدا.

ونعم ، هذا مكتوب في توثيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top