QT獲取顯示當前時間和日期的方法(用QTime,QDate和QDateTime)
獲取當前時間和日期
QT中獲取時間和日期的主要是 QTime 、QDate 和 QDateTime 這三個類。
QTime 類
通過 QTime 類中提供的時間相關的方法,可以獲取到當前系統時間(時、分、秒、毫秒),需要註意的是,計時的準確性由底層操作系統決定,並不是所有的操作系統都能精確到毫秒級別。
通過調用 QTime 類中的 currentTime() 方法可以獲取到當前系統時間:
QTime time = QTime::currentTime(); qDebug() << time; 輸出結果: QTime("12:01:13.427")
如果我們需要獲取字符串形式的時間,可以使用 toString() 這個方法:
QTime time = QTime::currentTime(); qDebug() << time.toString("hh:mm:ss"); 輸出結果: "12:01:13"
字符串形式的時間輸出格式由 toString() 方法中的 format 參數列表決定,可用的參數列表如下:
如果我們在顯示時間的同時還需要顯示上午或下午,可以在格式列表添加添加 “AP、A、ap、a” 等選項:
QTime time = QTime::currentTime(); qDebug() << time.toString("hh:mm:ss a"); 輸出結果: "02:29:31 下午"
當你電腦的系統語言使用中文時,不管格式列表中填 AP、A、ap、a 這四個選項裡的哪一個,都隻會顯示上午或下午;隻有當電腦系統語言使用英文時才會區分大小寫,例如選擇 AP/A,顯示 AM/PM,選擇 ap/a,顯示 am/pm 。
hh字段的顯示格式受 AP/A 或 ap/a 影響,如果格式列表中使用瞭 AP/A 或 ap/a 選項區分上下午,則 hh字段采用12小時制格式顯示;否則使用24小時制格式顯示:
QTime time = QTime::currentTime(); qDebug() << time.toString("hh:mm:ss a"); qDebug() << time.toString("hh:mm:ss"); 輸出結果: "02:50:38 下午" "14:50:38"
HH字段的顯示格式則不受 AP/A 或 ap/a 影響,不管格式列表中是否使用 AP/A 或 ap/a 選項區分上下午,HH字段均采用24小時制格式顯示:
QTime time = QTime::currentTime(); qDebug() << time.toString("HH:mm:ss a"); qDebug() << time.toString("HH:mm:ss"); 輸出結果: "14:52:03 下午" "14:52:03"
在格式列表中添加 t 選項可以用來獲取時區信息:
QTime time = QTime::currentTime(); qDebug() << time.toString("hh:mm:ss t"); 輸出結果: "14:59:02 中國標準時間" 修改時區後輸出結果: "14:00:45 新西伯利亞標準時間"
QDate類
通過調用 QDate 類中的 currentDate() 方法可以獲取到當前系統日期:
QDate date = QDate::currentDate(); qDebug() << date; qDebug() << date.toString("yyyy-MM-dd"); 輸出結果: QDate("2022-04-29") "2022-04-29"
QDate類中對日期的操作與QTime類中對時間的操作基本一樣,需要字符串格式的日期時,使用 toString() 方法即可,QDate類中對日期操作常用格式如下:
需要顯示星期時,使用 ddd 或 dddd 選項:
QDate date = QDate::currentDate(); qDebug() << date; qDebug() << date.toString("yyyy-MM-dd ddd"); qDebug() << date.toString("yyyy-MM-dd dddd"); 輸出結果: "2022-04-29 周五" "2022-04-29 星期五"
QDateTime類
QDateTime類是 QDate 和 QTime 的組合,提供一系列時間和日期相關的函數。
通過調用 QDateTime 類中的 currentDateTime() 方法可以獲取到當前系統時間和日期:
QDateTime dateTime; dateTime = QDateTime::currentDateTime(); qDebug()<<dateTime; qDebug() << dateTime.toString("yyyy-MM-dd hh:mm:ss ddd"); 輸出結果: QDateTime(2022-04-29 15:22:23.615 中國標準時間 Qt::TimeSpec(LocalTime)) "2022-04-29 15:22:23 周五"
使用 toString() 方法將時間和日期轉換成字符串形式時,格式與 QTime、QDate 中的格式一樣。
定時更新顯示時間和日期
創建一個定時器,每秒獲取一次系統時間和日期,轉換成字符串形式後再通過Label空間顯示即可完整代碼如下:
main.cpp
#include "dateTime.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); DateTime w; w.show(); return a.exec(); }
dateTime.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDateTime> #include <QDebug> #include <QTimer> #include <QLabel> #include <QVBoxLayout> #include <QApplication> class DateTime : public QWidget { Q_OBJECT public: DateTime(QWidget *parent = nullptr); ~DateTime(); void timeUpdate(void); private: QDateTime dateTime; QTimer *timer; QLabel *label; }; #endif
dateTime.cpp
#include "dateTime.h" DateTime::DateTime(QWidget *parent) : QWidget(parent) { //設置窗口標題和窗口大小 this->setWindowTitle("時間更新顯示例程"); this->resize(500, 100); //創建label對象顯示時間和日期 label = new QLabel(this); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(label); this->setLayout(layout); //初始化時間和日期顯示 dateTime = QDateTime::currentDateTime(); this->label->setText(dateTime.toString("yyyy-MM-dd hh:mm:ss ddd")); //創建定時器定時更新時間和日期 timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &DateTime::timeUpdate); timer->start(1000); } DateTime::~DateTime() { delete timer; } void DateTime::timeUpdate(void) { dateTime = QDateTime::currentDateTime(); this->label->setText(dateTime.toString("yyyy-MM-dd hh:mm:ss ddd")); }
補充:QT中分別獲取當前時間的年、月、日
百度查瞭半天,沒找到,就自己寫瞭一個測試,其實也很簡單,先用QDate去獲取當前的時間,時間格式設置為"yyyy-MM-dd",也就是"年-月-日"的格式,然後再利用字符串切割(strtok函數)去切割成獨立的年、月、日就OK啦,代碼如下(適合懶人一族,直接復制粘貼,哈哈^ _ ^)
QDate currentdate = QDate::currentDate(); QString str1 = currentdate.toString("yyyy-MM-dd"); qDebug() << "str1 = " << str1; QByteArray ba = str1.toLatin1();//將QString 轉換為 char *類型 char *dateStr = ba.data();//將QString 轉換為 char *類型 char *year = strtok(dateStr,"-"); char *month = strtok(NULL,"-"); char *date = strtok(NULL,"-"); qDebug() << "year is:" << year; qDebug() << "month is:" << month; qDebug() << "date is:" << date;
運行結果如下:
總結
到此這篇關於QT獲取顯示當前時間和日期的文章就介紹到這瞭,更多相關QT獲取顯示當前時間日期內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!