example1
QString buildTime = QStringLiteral("%1 %2").arg(__DATE__).arg(__TIME__);
ui->label->setText(buildTime);
QDateTime dateTime = QLocale("en_US").toDateTime(buildTime.simplified(), "MMM d yyyy hh:mm:ss");
ui->label_2->setText(dateTime.toString("yyyy MM dd hh:mm:ss"));
example2
在Qt发布程序时,有时想将版本号信息加上编译时间添加到程序右下角。
- 利用__DATE__与__TIME__编译宏特性为Qt程序添加编译日期时间。
- __DATE__和__TIME__是C/C++语言中的预定义宏,它们分别用于获取当前源文件被编译的日期和时间。
- __DATE__宏返回一个字符串常量,表示当前源文件被编译的日期。日期的格式为 “MMM DD YYYY”,其中MMM表示月份的缩写,DD表示日期,YYYY表示年份的四位数。例如,“Sep 05 2023” 表示2023年9月5日。
- __TIME__宏返回一个字符串常量,表示当前源文件被编译的时间。时间的格式为 “HH:MM:SS”,其中HH表示小时,MM表示分钟,SS表示秒钟。例如,“01:30:04” 表示01时30分04秒。
这两个宏在编写代码时可以用于输出编译时的日期和时间信息。通常用于日志记录、版本信息等场景中,有助于追踪代码的更新和维护。注意,它们提供的是编译时的日期和时间,并不是运行时的实际日期和时间。
注意:***QDateTime::currentDateTime()***是获取当前时间的,不是获取编译时间的。
以下是具体实现
static const QString buildTime()
{
QString dateTime;
dateTime.clear();
dateTime += __DATE__;
dateTime += __TIME__;
//注意" "是两个空格,用于日期为单数时需要转成“空格+0”
dateTime.replace(" "," 0");
QDateTime buildDateTime = QLocale(QLocale::English).toDateTime(dateTime,"MMM dd yyyyhh:mm:ss");
QString strMonth, strDay, strHour;
int nMonth = buildDateTime.date().month();
if(nMonth < 10)
{
strMonth = QString("0%1").arg(nMonth);
}else{
strMonth = QString("%1").arg(nMonth);
}
int nDay = buildDateTime.date().day();
if(nDay < 10)
{
strDay = QString("0%1").arg(nDay);
}else{
strDay = QString("%1").arg(nDay);
}
int nHour = buildDateTime.time().hour();
if(nHour < 10)
{
strHour = QString("0%1").arg(nHour);
}else{
strHour = QString("%1").arg(nHour);
}
QString strBuildTime;
strBuildTime = QString("%1-%2-%3 %4:%5:%6").arg(buildDateTime.date().year()).arg(strMonth).arg(strDay).arg(strHour).arg(buildDateTime.time().minute()).arg(buildDateTime.time().second());
return strBuildTime;
}
example3
文件时间
对应用程序迭代过程中,由于版本管理不规范或迭代过于频繁,经常需要通过查看其修改时间来确认软件版本。可以在程序的版本号中内置软件编译时间,自动地区分软件版本。
软件的编译时间,就是应用程序文件的最后一次修改时间。因此通过获取应用程序文件的最后一次修改时间来获取软件编译时间。
获取文件的最后修改时间可以使用QFileInfo类中的lastModified()函数,示例代码如下:
#include <QCoreApplication>
#include <QFileInfo>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QString appPath = QCoreApplication::applicationFilePath();
QFileInfo fileInfo(appPath);
if (fileInfo.exists()) {
qDebug() << "Last modified time:" << fileInfo.lastModified().toString();
} else {
qDebug() << "Application does not exist!";
}
return app.exec();
}
自己敲代码如下
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
QString buildTime();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QLocale>
#include <QDebug>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString appPath = QCoreApplication::applicationFilePath();
QFileInfo fileInfo(appPath);
if (fileInfo.exists()) {
qDebug() << "Last modified time:" << fileInfo.lastModified().toString();
QString FileBuildTime = fileInfo.birthTime().toString();
// ui->label->setText(FileBuildTime);
} else {
qDebug() << "Application does not exist!";
}
//原文链接:https://blog.youkuaiyun.com/zw_ggr_2017/article/details/130484771
// QDate date = QLocale::c().toDate(__DATE__, "MMM dd yyyy");
// QString buildTime = date.toString("yyyy MM dd") +" " + __TIME__;
//QString buildTime = QStringLiteral("%1 %2").arg(__DATE__).arg(__TIME__);
//QString buildTime = buildTime();//QStringLiteral("%1").arg(__DATE__);
//ui->label->setText(buildTime);
//QDateTime dateTime = QLocale("en_US").toDateTime(buildTime.simplified(), "MMM d yyyy hh:mm:ss");
//ui->label_2->setText(dateTime.toString("yyyy MM dd hh:mm:ss"));
QString StbuildTime = buildTime();
ui->label->setText(StbuildTime);
}
MainWindow::~MainWindow()
{
delete ui;
}
QString MainWindow::buildTime()
{
QString dateTime;
dateTime.clear();
dateTime += __DATE__;
dateTime += __TIME__;
//注意" "是两个空格,用于日期为单数时需要转成“空格+0”
dateTime.replace(" "," 0");
QDateTime buildDateTime = QLocale(QLocale::English).toDateTime(dateTime,"MMM dd yyyyhh:mm:ss");
QString strMonth, strDay, strHour;
int nMonth = buildDateTime.date().month();
if(nMonth < 10)
{
strMonth = QString("0%1").arg(nMonth);
}else{
strMonth = QString("%1").arg(nMonth);
}
int nDay = buildDateTime.date().day();
if(nDay < 10)
{
strDay = QString("0%1").arg(nDay);
}else{
strDay = QString("%1").arg(nDay);
}
int nHour = buildDateTime.time().hour();
if(nHour < 10)
{
strHour = QString("0%1").arg(nHour);
}else{
strHour = QString("%1").arg(nHour);
}
QString strBuildTime ;//= QString("%1%2%3").arg(buildDateTime.date().year()).arg(strMonth).arg(strDay).arg(strHour));
//strBuildTime = QString("%1-%2-%3 %4:%5:%6").arg(buildDateTime.date().year()).arg(strMonth).arg(strDay).arg(strHour).arg(buildDateTime.time().minute()).arg(buildDateTime.time().second());
strBuildTime = QString("%1%2%3").arg(buildDateTime.date().year()).arg(strMonth).arg(strDay);
return strBuildTime;
}

1857

被折叠的 条评论
为什么被折叠?



