QT計(jì)算時(shí)間差的方法詳解
QT計(jì)算時(shí)間差,兩次時(shí)間的間隔
項(xiàng)目計(jì)算碼流需要用到計(jì)算時(shí)間差
QT版本
利用secsTo函數(shù)
QDateTime startTime= QDateTime::currentDateTime(); Sleep(5000); QDateTime endTime= QDateTime::currentDateTime(); qint64 intervalTime = startTime.secsTo(endTime); //求時(shí)間差 qint64 intervalTimeMS = startTime.msecsTo(endTime); qDebug() << intervalTime; //時(shí)間相差秒數(shù) qDebug() << intervalTimeMS; //時(shí)間相差毫秒數(shù)
C++版本
獲取時(shí)間用time_t time( time_t * timer ),計(jì)算時(shí)間差使用double difftime( time_t timer1, time_t timer0 )。 精確到秒。
#include <time.h> #include <stdio.h> int main() { time_t start ,end ; double cost; time(&start); sleep(1); time(&end); cost=difftime(end,start); printf("%f/n",cost); return 0; }
方法補(bǔ)充
1、得出的結(jié)果單位是:天(不足一天為0,沒(méi)有半天的說(shuō)法)
QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss"); QDateTime time2 = QDateTime::fromString("2022-4-27 16:43:02", "yyyy-MM-dd HH:mm:ss"); int days = time1.daysTo(time2); qDebug() << "time2 - time1=" << days ;
2、得出的結(jié)果單位是:秒或毫秒
QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss"); QDateTime time2 = QDateTime::fromString("2022-4-25 16:43:02", "yyyy-MM-dd HH:mm:ss"); int seconds = time1.secsTo(time2); int msec = time2.msecsTo(time1); qDebug() << "time2 - time1=" << seconds << msec;
日期較往后的時(shí)間 放在括號(hào)內(nèi),不然得出的結(jié)果就是負(fù)數(shù)
3、獲取當(dāng)前日期,精確到毫秒
//獲取當(dāng)前的時(shí)間 QDateTime dTime =QDateTime::currentDateTime(); QString sTime =dTime.toString("yyyy-MM-dd hh:mm:ss:zzz");
注:小時(shí)那里HH和hh的區(qū)別, 比如下午三點(diǎn),HH就是15,hh就是03
4、時(shí)間轉(zhuǎn)時(shí)間戳
方式一:toTime_t,這種方法轉(zhuǎn)成時(shí)間戳的時(shí)候只能精確到s,不能直接在后面*1000就代表能精確到ms了,這是錯(cuò)的!
QDateTime dTime =QDateTime::currentDateTime(); dTime.setTimeSpec(Qt::LocalTime);//一定一定要設(shè)置。不然后面通過(guò)時(shí)間戳轉(zhuǎn)過(guò)來(lái)的日期對(duì)不上 int iCutTimeStamp = dTime.toTime_t(); //將當(dāng)前時(shí)間轉(zhuǎn)為時(shí)間戳 s
這種方法的時(shí)間戳轉(zhuǎn)時(shí)間對(duì)應(yīng)的方法是:
<strong>QDateTime dateTime1 = QDateTime::fromTime_t(cut_timestamp2);</strong>
方式二:可以精確到ms
QDateTime date = QDateTime::currentDateTime(); //基礎(chǔ)單位為豪秒 時(shí)間戳 qDebug() << time1.toMSecsSinceEpoch();
這種方法對(duì)應(yīng)的時(shí)間戳轉(zhuǎn)時(shí)間的方法是:
QDateTime dd = QDateTime::fromMSecsSinceEpoch(date.toMSecsSinceEpoch()); qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss");
注:int值超過(guò)10位就會(huì)溢出,用時(shí)間戳計(jì)算時(shí)間差的時(shí)候用秒為單位即可,不然用ms為單位來(lái)計(jì)算會(huì)出bug的
Qt計(jì)算兩個(gè)時(shí)間字符串的時(shí)差
bool LicenseOperation::daysSpacing(QString arg1, QString arg2 ,int days) { QDateTime start,end; end = QDateTime::fromString(arg1,"yyyyMMdd"); start = QDateTime::fromString(arg2,"yyyyMMdd"); validLicenseDays = start.daysTo(end); //求時(shí)間差; if(days > validLicenseDays){ validLicenseDays = days - validLicenseDays; return true; }else{ validLicenseDays = 0; return false; } }
QT DateTime計(jì)算時(shí)間差
QDateTime t1 = QDateTime::fromString("2020-08-03 00:00:00", "yyyy-MM-dd hh:mm:ss"); qDebug() << t1.toString("yyyy-MM-dd hh:mm:ss"); QDateTime t2 = QDateTime::fromString("2020-08-03 00:00:10", "yyyy-MM-dd hh:mm:ss"); qDebug() << t2.toString("yyyy-MM-dd hh:mm:ss"); int seconds = t2.toTime_t() - t1.toTime_t(); qDebug() << "相差:" << seconds << "秒"; // 相差: 10 秒 qDebug() << "相差:" << seconds * 1000 << "毫秒"; // 相差: 10000 毫秒 int msecs = t2.toMSecsSinceEpoch() - t1.toMSecsSinceEpoch(); // 相差: 10000 毫秒 qDebug() << "相差:" << msecs << "毫秒";
到此這篇關(guān)于QT計(jì)算時(shí)間差的方法詳解的文章就介紹到這了,更多相關(guān)QT計(jì)算時(shí)間差內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) link 鏈表反轉(zhuǎn)的實(shí)現(xiàn)
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) link 鏈表反轉(zhuǎn)的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09C++詳細(xì)講解內(nèi)存管理工具primitives
文章向大家介紹C++內(nèi)存管理primitives,主要包括primitives使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下2022-06-06利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例
今天小編就為大家分享一篇關(guān)于利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
本篇文章是對(duì)全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語(yǔ)言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例
棧和隊(duì)列,嚴(yán)格意義上來(lái)說(shuō),也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為?"一對(duì)一"?的數(shù)據(jù),但由于它們比較特殊,因此將其單獨(dú)作為一章,做重點(diǎn)講解2022-03-03一些C語(yǔ)言中字符串的算法問(wèn)題解決實(shí)例小結(jié)
這篇文章主要介紹了一些C語(yǔ)言中字符串的算法問(wèn)題解決實(shí)例小結(jié),包括將字符串轉(zhuǎn)化為int類型的數(shù)及旋轉(zhuǎn)字符串等操作,需要的朋友可以參考下2016-03-03C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))基本操作的實(shí)現(xiàn)詳解
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文主要和大家聊聊C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))的基本操作,感興趣的小伙伴可以了解一下2022-11-11