欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT計(jì)算時(shí)間差的方法詳解

 更新時(shí)間:2023年12月21日 11:04:14   作者:Acnidouwo  
這篇文章主要為大家詳細(xì)介紹了利用QT實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間的時(shí)間差的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

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)文章

最新評(píng)論