Qt時間類、日期類、時間日期類介紹

一.時間類(QTime)

Qt中的時間類QTime是用來處理時間的類,它可以表示一個特定的時間,精確到毫秒。QTime類提供了一些方法來訪問和操作時間,例如獲取小時、分鐘、秒以及毫秒部分,還可以進行時間的比較和運算。

下面是一個簡單的例子,展示如何使用QTime類創建一個時間對象,并獲取時間的各個部分:

#include <QTime>
#include <QDebug>int main() {// 創建一個QTime對象表示當前時間QTime currentTime = QTime::currentTime();// 輸出當前時間的小時、分鐘、秒和毫秒部分qDebug() << "Current time: " << currentTime.toString();qDebug() << "Hour: " << currentTime.hour();qDebug() << "Minute: " << currentTime.minute();qDebug() << "Second: " << currentTime.second();qDebug() << "Millisecond: " << currentTime.msec();return 0;
}

?QTime類在Qt中提供了豐富的方法來進行時間的比較、運算以及格式化輸出。下面分別詳細說明這些方法,并舉例演示它們的用法:

?時間比較:

  • QTime::operator==():比較兩個時間是否相等。
  • QTime::operator!=():比較兩個時間是否不相等。
  • QTime::operator<()QTime::operator>()QTime::operator<=()QTime::operator>=():比較兩個時間的大小關系。
#include <QTime>
#include <QDebug>int main() {QTime time1(10, 30, 0);QTime time2(12, 0, 0);if (time1 < time2) {qDebug() << "time1 is earlier than time2";} else {qDebug() << "time2 is earlier than time1";}return 0;
}

?時間運算:

  • QTime::addSecs():增加秒數。
  • QTime::addMSecs():增加毫秒數。
  • QTime::secsTo():計算兩個時間之間的秒數差。
  • QTime::msecsTo():計算兩個時間之間的毫秒數差。
#include <QTime>
#include <QDebug>int main() {QTime time1(10, 30, 0);QTime time2 = time1.addSecs(3600); // 增加1小時qDebug() << "New time: " << time2.toString();int secsDiff = time1.secsTo(time2);qDebug() << "Seconds difference: " << secsDiff;return 0;
}

二.QTime和QString的轉換

在Qt中,可以通過QTime類的toString()方法將QTime對象轉換為QString對象,也可以通過QTime類的靜態方法fromString()QString對象轉換為QTime對象。

QTime轉QString:

#include <QTime>
#include <QString>
#include <QDebug>int main() {// 創建一個QTime對象表示特定時間QTime time(12, 30, 0);// 將QTime對象轉換為QString對象QString timeString = time.toString("hh:mm:ss");// 輸出轉換后的字符串qDebug() << "Time as QString: " << timeString;return 0;
}

在上面的例子中,通過調用toString()方法將QTime對象time轉換為QString對象timeString,并指定了格式化字符串"hh:mm:ss"來表示小時、分鐘和秒的格式。

QString轉QTime:?

#include <QTime>
#include <QString>
#include <QDebug>int main() {// 創建一個QString對象表示時間字符串QString timeString = "15:45:30";// 將QString對象轉換為QTime對象QTime time = QTime::fromString(timeString, "hh:mm:ss");// 輸出轉換后的QTime對象qDebug() << "Time from QString: " << time.toString();return 0;
}

在上面的例子中,通過調用fromString()靜態方法將QString對象timeString轉換為QTime對象time,并指定了格式化字符串"hh:mm:ss"來解析小時、分鐘和秒的部分。

通過這種方式,可以方便地在QTime對象和QString對象之間進行轉換,便于在Qt應用程序中處理時間數據。

三.日期類(QDate)?

在Qt中,日期類QDate用于處理日期數據,提供了許多方法來操作、比較和格式化日期。下面是對QDate類的詳細分析以及一些示例

?QDate類的常用方法和功能:

  1. 構造函數

    • QDate(int year, int month, int day):根據年、月、日創建一個QDate對象。
  2. 獲取日期信息

    • year():獲取年份。
    • month():獲取月份。
    • day():獲取日期。
  3. 比較日期

    • operator==()operator!=()operator<()operator>()operator<=()operator>=():用于比較兩個日期的大小關系。
  4. 日期運算

    • addDays(int days):增加指定天數。
    • addMonths(int months):增加指定月數。
    • addYears(int years):增加指定年數。
    • daysTo(const QDate &date):計算兩個日期之間的天數差。
  5. 格式化輸出

    • toString(const QString &format):將日期轉換為字符串,可以指定格式化字符串。
  6. 其他方法

    • isValid():檢查日期是否有效。
    • currentDate():獲取當前日期。
    • fromString(const QString &string, const QString &format):從字符串中解析日期。

示例代碼如下?:

#include <QDate>
#include <QDebug>int main() {// 創建一個QDate對象表示特定日期QDate date(2024, 5, 19);// 輸出日期信息qDebug() << "Year: " << date.year();qDebug() << "Month: " << date.month();qDebug() << "Day: " << date.day();// 比較日期QDate currentDate = QDate::currentDate();if (date < currentDate) {qDebug() << "The specified date is in the past.";} else {qDebug() << "The specified date is in the future.";}// 日期運算QDate newDate = date.addDays(10);qDebug() << "New date: " << newDate.toString("yyyy-MM-dd");// 格式化輸出qDebug() << "Date as string: " << date.toString("dd/MM/yyyy");return 0;
}

四:QDate和QString的轉換

在Qt中,可以使用兩種方式進行QDateQString之間的轉換:一種是使用QDateQString類提供的方法,另一種是使用QVariant類。

1. 使用QDate和QString類的方法進行轉換:

QDate轉換為QString:

  • 使用QDate::toString(const QString &format)方法將QDate對象轉換為字符串。

QString轉換為QDate:

  • 使用QDate::fromString(const QString &string, const QString &format)方法將字符串轉換為QDate對象。

示例代碼如下:?

#include <QDate>
#include <QDebug>int main() {// QDate轉換為QStringQDate date(2023, 10, 15);QString dateString = date.toString("yyyy-MM-dd");qDebug() << "Date as string: " << dateString;// QString轉換為QDateQString str = "2022-08-25";QDate newDate = QDate::fromString(str, "yyyy-MM-dd");qDebug() << "String to date: " << newDate.toString("yyyy-MM-dd");return 0;
}

2. 使用QVariant進行轉換:

QDate轉換為QString:

  • 使用QVariant::fromValue()QDate對象轉換為QVariant對象,再使用QVariant::toString()QVariant對象轉換為字符串。

QString轉換為QDate:

  • 使用QVariant::fromValue()將字符串轉換為QVariant對象,再使用QVariant::value<QDate>()QVariant對象轉換為QDate對象。

示例代碼如下:?

#include <QDate>
#include <QVariant>
#include <QDebug>int main() {// QDate轉換為QStringQDate date(2023, 10, 15);QVariant variant = QVariant::fromValue(date);QString dateString = variant.toString();qDebug() << "Date as string: " << dateString;// QString轉換為QDateQString str = "2022-08-25";QVariant newVariant = QVariant::fromValue(str);QDate newDate = newVariant.value<QDate>();qDebug() << "String to date: " << newDate.toString("yyyy-MM-dd");return 0;
}

?五:時間日期類(QDateTime)

在Qt中,QDateTime類用于表示日期和時間的組合。它包含了日期和時間的信息,并提供了一系列方法來處理日期和時間數據。以下是QDateTime類的一些主要特性和示例:

?主要特性:

  1. 構造函數QDateTime類有多個構造函數,可以根據需要傳遞日期、時間、時區等參數來創建對象。

  2. 獲取日期時間信息

    • date():獲取日期部分。
    • time():獲取時間部分。
    • timeZone():獲取時區信息。
  3. 比較和運算

    • 可以比較兩個QDateTime對象的大小。
    • 可以對QDateTime對象進行加減操作,例如addDays(),?addSecs(),?addMonths()等。
  4. 格式化輸出

    • toString(const QString &format):將QDateTime對象格式化為字符串。
  5. 其他方法

    • isValid():檢查日期時間是否有效。
    • currentDateTime():獲取當前日期時間。
    • fromString(const QString &string, const QString &format):從字符串中解析日期時間。

代碼示例如下:?

#include <QDateTime>
#include <QDebug>int main() {// 創建一個QDateTime對象表示特定日期時間QDateTime datetime(QDate(2024, 5, 19), QTime(12, 30, 0));// 輸出日期時間信息qDebug() << "Date: " << datetime.date().toString("yyyy-MM-dd");qDebug() << "Time: " << datetime.time().toString("hh:mm:ss");// 比較日期時間QDateTime currentDateTime = QDateTime::currentDateTime();if (datetime < currentDateTime) {qDebug() << "The specified date time is in the past.";} else {qDebug() << "The specified date time is in the future.";}// 日期時間運算QDateTime newDateTime = datetime.addDays(5).addSecs(3600); // 增加5天和1小時qDebug() << "New date time: " << newDateTime.toString("yyyy-MM-dd hh:mm:ss");// 格式化輸出qDebug() << "Date time as string: " << datetime.toString("yyyy-MM-dd hh:mm:ss");return 0;
}

六:QDate和QString的轉換

在Qt中,可以使用QDateTime類來表示日期和時間,并且可以與QString進行相互轉換。以下是關于日期時間類QDateTimeQString之間轉換的詳細說明以及示例:

QDateTime轉換為QString:

1.使用toString()方法QDateTime類提供了toString()方法,可以將日期時間對象轉換為字符串,可以指定格式。

QDateTime dateTime(QDate(2024, 5, 19), QTime(12, 30, 0)); // 創建一個日期時間對象
QString dateTimeString = dateTime.toString("yyyy-MM-dd hh:mm:ss"); // 轉換為字符串
qDebug() << "DateTime as string: " << dateTimeString;

?2.使用QVariant:可以通過QVariant::fromValue()QDateTime對象轉換為QVariant對象,再使用QVariant::toString()QVariant對象轉換為字符串。

QDateTime dateTime(QDate(2024, 5, 19), QTime(9, 0, 0));
QVariant variant = QVariant::fromValue(dateTime);
QString dateTimeString = variant.toString();
qDebug() << "DateTime as string: " << dateTimeString;

QString轉換為QDateTime:

1.使用QDateTime::fromString()靜態方法:可以通過QDateTime::fromString()靜態方法將字符串轉換為QDateTime對象。

QString dateTimeStr = "2024-05-19 17:20:30";
QDateTime newDateTime = QDateTime::fromString(dateTimeStr, "yyyy-MM-dd hh:mm:ss");
qDebug() << "String to DateTime: " << newDateTime.toString();

?2.使用QVariant:可以通過QVariant::fromValue()將字符串轉換為QVariant對象,再使用QVariant::value<QDateTime>()QVariant對象轉換為QDateTime對象。

QString dateTimeStr = "2024-05-19 12:15:00";
QVariant newVariant = QVariant::fromValue(dateTimeStr);
QDateTime newDateTime = newVariant.value<QDateTime>();
qDebug() << "String to DateTime: " << newDateTime.toString();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14938.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14938.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14938.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python列表,元組,集合,字典詳解一篇搞懂

目錄 介紹 列表(List) 集合(Set) 字典(Dict) 元組(Tuple) 列表 列表定義 ?編輯 列表切片 列表常用方法 append extend ?編輯 insert ?編輯 remove pop ?編輯 clear ?編輯 列表修改元素 sort 升序 倒序 reverse count ?編輯 index 淺拷貝和深拷貝 …

《書生·浦語大模型實戰營》第一課 學習筆記:書生·浦語大模型全鏈路開源體系

文章大綱 1. 簡介與背景智能聊天機器人與大語言模型目前的開源智能聊天機器人與云上運行模式 2. InternLM2 大模型 簡介3. 視頻筆記&#xff1a;書生浦語大模型全鏈路開源體系內容要點從模型到應用典型流程全鏈路開源體系 4. 論文筆記:InternLM2 Technical Report簡介軟硬件基礎…

基于Java的地震震中附近城市分析實戰

目錄 前言 一、空間數據說明 1、空間查詢 二、Java后臺開發 1、模型層設計與實現 2、控制層設計與實現 三、Leaflet地圖開發 1、地震震中位置展示 2、附近城市展示 3、成果展示 總結 前言 隨著全球氣候變化和地殼活動的不斷演變&#xff0c;地震作為一種自然災害&…

第十三節:帶你梳理Vue2 : watch偵聽器

官方解釋:> 觀察 Vue 實例變化的一個表達式或計算屬性函數。回調函數得到的參數為新值和舊值。表達式只接受監督的鍵路徑。對于更復雜的表達式&#xff0c;用一個函數取代<br/>## 1. 偵聽器的基本使用偵聽器可以監聽data對象屬性或者計算屬性的變化watch是觀察屬性的…

現代C++ 如何使用 Lambda 使代碼更具表現力、更容易理解?

使用 Lambda 使代碼更具表現力 一、Lambda VS. 仿函數二、總結 一、Lambda VS. 仿函數 Lambda 是 C11 中最引人注目的語言特性之一。它是一個強大的工具&#xff0c;但必須正確使用才能使代碼更具表現力&#xff0c;而不是更難理解。 首先&#xff0c;要明確的是&#xff0c;…

向npm發布自己寫的vue組件,使用vite創建項目

向npm發布自己寫的vue組件&#xff0c;使用vite創建項目 創建項目 pnpm create vite輸入項目名稱 由于我的組件是基于 ant-design-vue和vue的&#xff0c;需要解析.vue文件&#xff0c;我又安裝了下面4個。 然后執行 pnpm i安裝依賴 vite.config.ts import { defineC…

防范TOCTOU競態條件攻擊

防范TOCTOU競態條件攻擊 在軟件開發過程中&#xff0c;我們常常會遇到需要在使用資源之前檢查其狀態的情況。然而&#xff0c;如果資源的狀態在檢查和使用之間發生了變化&#xff0c;那么檢查的結果可能會失效&#xff0c;導致軟件在資源處于非正常狀態時執行無效操作。這種時…

[datawhale202405]從零手搓大模型實戰:TinyAgent

結論速遞 TinyAgent項目實現了一個簡單的Agent智能體&#xff0c;主要是實現了ReAct策略&#xff08;推理調用工具的能力&#xff09;&#xff0c;及封裝了一個Tool。 項目實現有一定的疏漏。為了正確運行代碼&#xff0c;本次對代碼Agent部分進行了簡單修改&#xff08;完善…

windows安裝rocketmq

1.下載連接 https://rocketmq.apache.org/download/ 2.解壓到D盤下&#xff08;其他位置也可以&#xff09; 3.配置環境變量 需要有jdk環境 新建ROCKETMQ_HOME&#xff0c;剛剛解壓的位置 編輯Path&#xff0c;新增%ROCKETMQ_HOME%\bin 4.啟動mqnameserver 進入安裝bin目錄下…

ERC314協議

314協議功能詳解 這兩天花時間研究了一下314協議&#xff0c;總體感覺還不錯&#xff0c;有創新。 功能亮點 314協議作為一種創新的代幣標準&#xff0c;致力于降低用戶交易成本與簡化授權流程&#xff0c;通過“轉賬即交易”模式革新傳統Swap體驗。此協議簡化了買賣代幣的過程…

什么是react

React 是一個用于構建用戶界面的 JavaScript 庫&#xff0c;由 Facebook&#xff08;現在的 Meta&#xff09;開發和維護。它首次發布于2013年&#xff0c;并迅速成為最受歡迎的前端庫之一。React 的主要目標是提供一種高效、靈活的方式來構建用戶界面&#xff0c;特別是在大型…

gc和gccgo編譯器

Go 語言有兩個主要的編譯器&#xff0c;分別是 Go 編譯器&#xff08;通常簡稱為 gc&#xff09;和 GCCGO。它們之間有一些重要的異同點&#xff1a; gc 編譯器&#xff1a; gc 是 Go 語言的官方編譯器&#xff0c;由 Go 語言的開發團隊維護。它是 Go 語言最常用的編譯器&#…

PHP代碼審計前期準備

1 php代碼審計的意義 1.1 什么是代碼審計 就是獲取目標的代碼&#xff0c;這個目標可以是一個網站&#xff0c;也可以是一個手機app 1.2 黑盒測試與白盒測試的區別 在代碼審計中黑盒和白盒的主要區別就在于是否可以拿到源代碼&#xff0c;黑盒是拿不到源代碼的&#xff0c;…

交叉編譯——

什么是交叉編譯 交叉編譯 是在一個平臺上生成臨海一個平臺可執行代碼. eg.在windows上面編寫C51代碼&#xff0c;并編譯生成可執行代碼。如xx.hex 我們在Ubuntu上編寫樹莓派的代碼&#xff0c;并編譯成可執行代碼。a.out. 是在樹莓派上運行&#xff0c;不在Ubuntu Linux上面運…

便攜式iv測試儀特點

TH-PV30便攜式IV測試儀是一種用于測量半導體器件電學特性的設備&#xff0c;它具有體積小、重量輕、便于攜帶等特點&#xff0c;廣泛應用于半導體行業、科研實驗室以及教育領域。 該測試儀的工作原理基于四探針法&#xff0c;通過在半導體器件表面放置四個金屬探針&#xff0c…

【vs2022】安裝copilot和reshaper

直接安裝新版vs 17.10 自帶集成的copilot支持安裝resharper 可以跳過市場里的reshper安裝好后依然可以直接使用vs。 resharper 2024.1.2 市場里還是i老版本&#xff1a; copilot 不兼容,這個是之前市場安裝的版本 官方建議用vs intall 安裝 安裝 GitHub Copilot GitHub.Co…

詳解http協議

什么是HTTP協議 定義 Http協議即超文本傳送協議 (HTTP-Hypertext transfer protocol) 。 它定義了瀏覽器&#xff08;即萬維網客戶進程&#xff09;怎樣向萬維網服務器請求萬維網文檔&#xff0c;以及服務器怎樣把文檔傳送給瀏覽器。從層次的角度看&#xff0c;HTTP是面向&am…

第四十一天 | 62.不同路徑 63.不同路徑|| 343.整數拆分 96.不同的二叉搜索樹

題目&#xff1a;62.不同路徑 1.二維dp數組dp[i][j]含義&#xff1a;到達&#xff08;i&#xff0c;j&#xff09;位置有dp[i][j]種方法。 2.動態轉移方程&#xff1a;dp[i][j] dp[i - 1][j] dp[i][j - 1] 3.初始化&#xff1a;dp[0][j] 1, dp[i][0] 1 &#xff08;第一…

Vue3設置緩存:storage.ts

在vue文件使用&#xff1a; import { Local,Session } from //utils/storage; // Local if (!Local.get(字段名)) Local.set(字段名, 字段的值);// Session Session.getToken()storage.ts文件&#xff1a; import Cookies from js-cookie;/*** window.localStorage 瀏覽器永…

uniapp 安卓 Pc端真機瀏覽器調試

下載插件:真機模擬瀏覽器 1. 安裝, 每次啟用時使用usb 線連接電腦, 并且打開手機或者POS (調試設備)開發者模式, 比如我的是pos 機 則在系統設置中找到版本號,點擊多次就會觸發開發者模式 2.打開真機模擬軟件,打開后會打開一個瀏覽器,如果想要模擬google的瀏覽器則 在瀏覽器地…