2010-06-30 86 views
1

我即將從1970年1月1日開始存儲時間爲納秒的文件中讀取數據。我的問題是我想將它讀取到QDateTime對象,但它根本無法正常工作,Qt文檔也無法幫助我。Qt QDateTime 1970年1月1日以後的納秒

注:毫秒光柵夠我的目的 這裏我目前的做法:

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

+2

請注意,1000ns是1us(微秒),而QDateTime方法使用的是毫秒。所以你可能應該將ns除以1000000而不是od 1000. – chalup 2010-07-01 09:43:57

+0

你說得對,但是這個在我的代碼中被修復了,只是忘了改變那個「黑客」 – drahnr 2010-07-01 20:08:38

回答

3

QDateTime::addDays()QDateTime::addMSecs()是返回一個新QDateTime const函數。你只是拋開了回報價值。

是的,這是寫在documentation

+0

非常感謝 我昨天簡直累了...愚蠢的失敗:> – drahnr 2010-07-01 07:46:41

相關問題