Qt中关于获取程序编译时间的问题
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"); }