Qt中关于获取程序编译时间的问题
问题描述:
在使用下面函数获取程序编译时间,进行版本记录时,之前一直运行好好的程序突然不能正常显示编译时间了,开始代码如下,
//错误代码
//现在原因已查明:当日期只有一位时,系统的编译时间会用空格进行填充,如“5”会被填充为“ 5”,多了一个空格
//当日期为两位时,则正常输出为日期。就导致一个问题:当天数为一位数时,读取编译时间需要加一个空格,两位数时候就不加空格
QDateTime MM::buildDateTime()
{
QString dateTime;
dateTime += __DATE__;
dateTime += __TIME__;
return QLocale(QLocale::English).toDateTime(dateTime, "MMM dd yyyyhh:mm:ss");
}
原因分析:
后经过分析 ,QLocale(QLocale::English).toDateTime(dateTime, “MMM dd yyyyhh:mm:ss”);这个函数对于传入的字符传和模板是严格对应的,即每一个位置的字符要对应其解释的意义,不然就只能实例化一个空的QTateTime对象。以上代码就是在月和日之间缺少一个空格导致实例化失败。
解决方案:
打印程序中的__DATE__、TIME,将空格,年月等与后面字符串对应,进行程序纠正,修改后代码如下:
QDateTime PISInfo::buildDateTime()
{
QString dateTime;
dateTime += __DATE__;
// qDebug()<<__DATE__;
dateTime += __TIME__;
// qDebug()<<__TIME__;
// Feb 5 2021
// 09:33:35
qDebug()<<QLocale(QLocale::English).toDateTime(dateTime, "MMM dd yyyyhh:mm:ss");
return QLocale(QLocale::English).toDateTime(dateTime, "MMM dd yyyyhh:mm:ss");
}