最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt?QDateTime計算時間差的實現(xiàn)示例

 更新時間:2023年04月25日 10:37:06   作者:妙為  
本文主要介紹了Qt?QDateTime計算時間差的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

如果一個程序比較耗時,我們又想知道性能的瓶頸在哪里,然后針對性的進行優(yōu)化。這里暫時不考慮多線程的情況。Qt中與時間相關(guān)的類大概有以下幾個:
1.QDateTime
2.QTime
3.QDate
4.QTimeZone
5.QCalendar
是不是有點頭大,反正我是懵圈了。。。。。。
這篇文章主要聊聊QDateTime

一、QDateTime

QDateTime官方文檔

二、常用的函數(shù)

主要有以下常用函數(shù)

從官網(wǎng)描述來看大概意思:QDateTime 對象編碼日歷日期和時鐘時間(“日期時間”)。它結(jié)合了QDate和QTime類的特性。它可以從系統(tǒng)時鐘中讀取當前日期時間。它提供了比較日期時間和通過添加秒數(shù)、天數(shù)、月數(shù)或年數(shù)來操作日期時間的函數(shù)。

1.示例代碼

#include "MainWindow.h"

#include <QApplication>
#include <QTime>
#include <QDateTime>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
//    w.show();


//    int iCount[10000000] = {1};
    int *pAllocation = new int[10000000];
    int item = 0;
    QDateTime time1 = QDateTime::currentDateTime();
    QTime startTime = QTime::currentTime();
    for(quint64 i=0; i<9000000000; i++)
    {
        item = i;
    }

    QDateTime time2 = QDateTime::currentDateTime();
    int days = time1.daysTo(time2);
    qDebug() << "Cast days=" << days;

    quint64 sTime = time1.toTime_t();
    quint64 eTime = time2.toTime_t();

    quint64 costTime = eTime - sTime;
    qDebug() << "eTime - sTime=" << costTime;
    QDateTime elapseTime = QDateTime::fromTime_t(costTime);
    qDebug() << "Elapsed time=" << elapseTime;

    QTime endTime = QTime::currentTime();



    int elapsed = startTime.secsTo(endTime);
    qDebug() << startTime.secsTo(endTime);


//    int ndaysec = 24*60*60;
//    qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

    QDateTime dateTime;
    QString elapsedTime = dateTime.fromTime_t(elapsed).toString("yyyy-MM-dd hh:mm:ss[:zzz]");
    qDebug() << "Cast time=" << elapsedTime;

    return a.exec();
}

注意如果考慮毫秒、微秒、納秒級在計算時間差的時候,建議使用quint64,否則很容易溢出。
另外boost當中的chrono也非常好用,而且精確度可以達到納秒級,當然這里是考慮了cpu的時鐘頻率。

#include <iostream>
#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG		// 必須在頭文件之前定義宏,否則無效?。?!
#include <boost/date_time/posix_time/posix_time.hpp>
 
int main(int argc, char **argv) {
	// 第四個參數(shù),如果精確度是微秒,單位就是微秒,如果精確度是納秒,單位就是納秒
	boost::posix_time::time_duration td(1, 10, 30, 1000);				// 01:10:30
	// 查看當前的精確度
	if (td.resolution() == boost::date_time::nano) printf("精確度:納秒\n");
	else printf("精確度:微秒\n");
	// 返回秒的小數(shù)部分的位數(shù)(微秒6位,納秒9位)
	std::cout << td.num_fractional_digits() << std::endl;
 
	// 對于以下輸出,默認微秒精度輸出:01:10:30.001000  納秒精度輸出:01:10:30.000001000
	std::cout << td << std::endl;
	// 對于以下輸出,在納秒精度下,微秒會被忽略(微秒:4230001 納秒:4230000)
	std::cout << td.total_milliseconds() << std::endl;
	// 下面的這個方法,就是輸出小數(shù)點后面的數(shù)值,單位隨精確度變化
	std::cout << td.fractional_seconds() << std::endl;
	return 0;
}

2.日期與時間戳互轉(zhuǎn)

QString starttime ="2022-11-11 12:00:00";
QString endtime = "2022-11-13 12:00:01";
QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");
QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");
uint stime = start.toTime_t();
uint etime = end.toTime_t();

QDateTime time = QDateTime::fromTime_t(timeT); 

到此這篇關(guān)于Qt QDateTime計算時間差的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Qt QDateTime計算時間差內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言利用EasyX實現(xiàn)繪制足球圖案

    C語言利用EasyX實現(xiàn)繪制足球圖案

    這篇文章主要為大家詳細介紹了C語言如何利用EasyX繪圖庫實現(xiàn)繪制一個簡單的足球圖案,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-11-11
  • C++11并發(fā)編程:多線程std::thread

    C++11并發(fā)編程:多線程std::thread

    今天小編就為大家分享一篇關(guān)于C++11并發(fā)編程:多線程std::thread,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++如何實現(xiàn)sha256算法

    C++如何實現(xiàn)sha256算法

    SHA-256算法由于其強大的安全性,已成為國際標準和許多安全協(xié)議的推薦算法,在密碼存儲、數(shù)字簽名、區(qū)塊鏈技術(shù)、SSL/TLS協(xié)議、數(shù)據(jù)完整性驗證、系統(tǒng)安全審計等眾多應(yīng)用領(lǐng)域,SHA-256算法都至關(guān)重要,這篇文章主要介紹了C++如何實現(xiàn)sha256算法,需要的朋友可以參考下
    2024-07-07
  • 在C語言項目中有效進行異常處理機制(最新推薦)

    在C語言項目中有效進行異常處理機制(最新推薦)

    本文將探討在C語言項目中如何設(shè)計和實現(xiàn)錯誤處理機制,以確保程序的健壯性和可靠性,感興趣的朋友一起看看吧
    2025-03-03
  • C語言實現(xiàn)掃雷游戲(初級版)

    C語言實現(xiàn)掃雷游戲(初級版)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷游戲初級版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C++?ASIO實現(xiàn)異步套接字管理詳解

    C++?ASIO實現(xiàn)異步套接字管理詳解

    Boost?ASIO(Asynchronous?I/O)是一個用于異步I/O操作的C++庫,該框架提供了一種方便的方式來處理網(wǎng)絡(luò)通信、多線程編程和異步操作,本文介紹了如何通過ASIO框架實現(xiàn)一個簡單的異步網(wǎng)絡(luò)套接字應(yīng)用程序,需要的可以參考下
    2023-08-08
  • C++與C語言常用的語法對比

    C++與C語言常用的語法對比

    這篇文章主要介紹了C++與C語言常用的語法對比,文章基于c++和C語言的相關(guān)資料展開兩者的語法相互對比,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • 基于C++實現(xiàn)五子棋AI算法思想

    基于C++實現(xiàn)五子棋AI算法思想

    這篇文章主要為大家詳細介紹了基于C++實現(xiàn)五子棋AI算法思想,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++?多線程之互斥量(mutex)詳解

    C++?多線程之互斥量(mutex)詳解

    這篇文章主要為大家詳細介紹了C++多線程之互斥量(mutex),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 一篇帶你了解C語言--位操作詳情

    一篇帶你了解C語言--位操作詳情

    這篇文章主要介紹了關(guān)于C語言位運算的簡單示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08

最新評論

横山县| 湘乡市| 沈丘县| 泗洪县| 民勤县| 牡丹江市| 吴旗县| 天门市| 永清县| 泸西县| 公主岭市| 乌兰县| 靖安县| 宁蒗| 开鲁县| 双流县| 扶绥县| 阜阳市| 宁波市| 阜宁县| 张家界市| 吐鲁番市| 哈巴河县| 房山区| 米脂县| 习水县| 北川| 星座| 宽甸| 定襄县| 休宁县| 锦州市| 黄浦区| 新平| 昌宁县| 永城市| 巧家县| 诸城市| 锡林浩特市| 吴江市| 台州市|