系统编译时间的获取

16 篇文章 0 订阅
8 篇文章 0 订阅

在程序打包测试,有时候会需要当前程序编译的时间来标识版本或者其他

ANSIC标准定义了以下6种可供C语言使用的预定义宏:   
       __LINE__                        在源代码中插入当前源代码行号   
       __FILE__                        在源代码中插入当前源代码文件名   
       __DATE__                        在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕   
       __TIME__                        在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕         
       __STDC__                        当要求程序严格遵循ANSIC标准时该标识符被赋值为1


所以我们可以通过对应的预定义宏来做

比如格式要求:Test年月日-时分秒

//字符串拆分
std::vector<std::string> NativeUtils::split(std::string str, std::string pattern)
{
    std::string::size_type pos;
    std::vector<std::string> result;
    str+=pattern;//扩展字符串以方便操作
    int size=str.size();
    
    for(int i=0; i<size; i++)
    {
        pos=str.find(pattern,i);
        if(pos<size)
        {
            std::string s=str.substr(i,pos-i);
            result.push_back(s);
            i=pos+pattern.size()-1;
        }
    }
    return result;
}

//月份转换
std::string transformMonth(std::string sSrcMonth,bool toNum)
{
    std::string sMonths[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
    std::string sMonthNums[] = {"01","02","03","04","04","06","07","08","09","10","11","12"};
    int size = 0;
    GET_ARRAY_LEN(sMonths,size);
    std::string sNewMonth = "";
    for (int i = 0; i < size; ++i)
    {
        if (sSrcMonth.find(sMonths[i]) != std::string::npos) {
            sNewMonth = sMonthNums[i];
            break;
        }
    }
    return sNewMonth;
}

//产生编译时间对应格式的字符串
std::string NativeUtils::getBulidTime()
{
    
    //编译时间
    static const char* szDate = __DATE__;
    static const char* szTime = __TIME__;
    std::vector<std::string> vDate = NativeUtils::split(szDate, " ");
    std::vector<std::string> vTime = NativeUtils::split(szTime, ":");
    std::string sBulidTime = "Test";
    sBulidTime.append(vDate.at(2));
    sBulidTime.append(transformMonth(vDate.at(0),true));
    sBulidTime.append(vDate.at(1)+"-");
    for (auto str : vTime) {
        sBulidTime.append(str);
    }
    return sBulidTime;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值