QT計算時間差的方法詳解
QT計算時間差,兩次時間的間隔
項目計算碼流需要用到計算時間差
QT版本
利用secsTo函數
QDateTime startTime= QDateTime::currentDateTime(); Sleep(5000); QDateTime endTime= QDateTime::currentDateTime(); qint64 intervalTime = startTime.secsTo(endTime); //求時間差 qint64 intervalTimeMS = startTime.msecsTo(endTime); qDebug() << intervalTime; //時間相差秒數 qDebug() << intervalTimeMS; //時間相差毫秒數
C++版本
獲取時間用time_t time( time_t * timer ),計算時間差使用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; }
方法補充
1、得出的結果單位是:天(不足一天為0,沒有半天的說法)
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、得出的結果單位是:秒或毫秒
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;
日期較往后的時間 放在括號內,不然得出的結果就是負數
3、獲取當前日期,精確到毫秒
//獲取當前的時間 QDateTime dTime =QDateTime::currentDateTime(); QString sTime =dTime.toString("yyyy-MM-dd hh:mm:ss:zzz");
注:小時那里HH和hh的區(qū)別, 比如下午三點,HH就是15,hh就是03
4、時間轉時間戳
方式一:toTime_t,這種方法轉成時間戳的時候只能精確到s,不能直接在后面*1000就代表能精確到ms了,這是錯的!
QDateTime dTime =QDateTime::currentDateTime(); dTime.setTimeSpec(Qt::LocalTime);//一定一定要設置。不然后面通過時間戳轉過來的日期對不上 int iCutTimeStamp = dTime.toTime_t(); //將當前時間轉為時間戳 s
這種方法的時間戳轉時間對應的方法是:
<strong>QDateTime dateTime1 = QDateTime::fromTime_t(cut_timestamp2);</strong>
方式二:可以精確到ms
QDateTime date = QDateTime::currentDateTime(); //基礎單位為豪秒 時間戳 qDebug() << time1.toMSecsSinceEpoch();
這種方法對應的時間戳轉時間的方法是:
QDateTime dd = QDateTime::fromMSecsSinceEpoch(date.toMSecsSinceEpoch()); qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss");
注:int值超過10位就會溢出,用時間戳計算時間差的時候用秒為單位即可,不然用ms為單位來計算會出bug的
Qt計算兩個時間字符串的時差
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); //求時間差; if(days > validLicenseDays){ validLicenseDays = days - validLicenseDays; return true; }else{ validLicenseDays = 0; return false; } }
QT DateTime計算時間差
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 << "毫秒";
到此這篇關于QT計算時間差的方法詳解的文章就介紹到這了,更多相關QT計算時間差內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!