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");
}

你可能感兴趣的:(Qt,qt,c++)