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

QT計算時間差的方法詳解

 更新時間:2023年12月21日 11:04:14   作者:Acnidouwo  
這篇文章主要為大家詳細介紹了利用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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言數據結構 link 鏈表反轉的實現

    C語言數據結構 link 鏈表反轉的實現

    這篇文章主要介紹了C語言數據結構 link 鏈表反轉的實現的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C++詳細講解內存管理工具primitives

    C++詳細講解內存管理工具primitives

    文章向大家介紹C++內存管理primitives,主要包括primitives使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06
  • C語言malloc與calloc區(qū)別詳解

    C語言malloc與calloc區(qū)別詳解

    本文主要介紹了C語言malloc與calloc區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 利用rapidjson實現解析嵌套的json的方法示例

    利用rapidjson實現解析嵌套的json的方法示例

    今天小編就為大家分享一篇關于利用rapidjson實現解析嵌套的json的方法示例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 全排列算法的非遞歸實現與遞歸實現的方法(C++)

    全排列算法的非遞歸實現與遞歸實現的方法(C++)

    本篇文章是對全排列算法的非遞歸實現與遞歸實現的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言超詳細講解棧與隊列實現實例

    C語言超詳細講解棧與隊列實現實例

    棧和隊列,嚴格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關系為?"一對一"?的數據,但由于它們比較特殊,因此將其單獨作為一章,做重點講解
    2022-03-03
  • 怎么在C++二進制文件中注入git信息詳解

    怎么在C++二進制文件中注入git信息詳解

    這篇文章主要給大家介紹了關于怎么在C++二進制文件中注入git信息的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • 詳解C++編程中的vector類容器用法

    詳解C++編程中的vector類容器用法

    vector是一個標準庫中的容器,使用時需要包含#include <vector>頭文件,也可以說vector是一個類模板而不是一種數據類型,對它的定義,需要指定類型,需要的朋友可以參考下
    2016-05-05
  • 一些C語言中字符串的算法問題解決實例小結

    一些C語言中字符串的算法問題解決實例小結

    這篇文章主要介紹了一些C語言中字符串的算法問題解決實例小結,包括將字符串轉化為int類型的數及旋轉字符串等操作,需要的朋友可以參考下
    2016-03-03
  • C語言中單鏈表(不帶頭結點)基本操作的實現詳解

    C語言中單鏈表(不帶頭結點)基本操作的實現詳解

    鏈表是一種物理存儲結構上非連續(xù)、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。本文主要和大家聊聊C語言中單鏈表(不帶頭結點)的基本操作,感興趣的小伙伴可以了解一下
    2022-11-11

最新評論