2025年QT获取显示当前时间和日期

QT获取显示当前时间和日期获取当前时间和日期 QT 中获取时间和日期的主要是 QTime QDate 和 QDateTime 这三个类 QTime 类 通过 QTime 类中提供的时间相关的方法 可以获取到当前系统时间 时 分 秒 毫秒 需要注意的是 计时的准确性由底层操作系统决定

大家好,我是讯享网,很高兴认识大家。

获取当前时间和日期

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")); } 
小讯
上一篇 2025-04-08 13:38
下一篇 2025-01-15 17:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46231.html