您的位置:首页 > 编程语言 > C语言/C++

C语言之自定义__DATE__格式

2015-07-04 13:27 471 查看

C语言之自定义DATE格式

DATE的好用之外不用再特意说明,比如某个程序编译时间需要显示出来,那么就不需要每编译一次都改一次时间。

比如今天是2015-07-03,那么DATE宏会输出
Jul 03 2015
,比如我想要一个2015/07的效果。但是并不支持自定义,使用Different format of DATE macro可以改变显示的顺序,但是并不能将Jul改成07。发现有Convert string from DATE into a time_t可以实现将DATE改为time_t,如下代码:

[code]/**
 * @brief getDateFromMacro
 * @param time __DATE__
 * @return
 */
static time_t getDateFromMacro(char const *time) {
    char s_month[5];
    int month, day, year;
    struct tm t = {0};
    static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";

    sscanf(time, "%s %d %d", s_month, &day, &year);

    month = (strstr(month_names, s_month)-month_names)/3;

    t.tm_mon = month;
    t.tm_mday = day;
    t.tm_year = year - 1900;
    t.tm_isdst = -1;

    return mktime(&t);
}


转换成time_t后,就已经基本上大路了。比如用在Qt开发中可以转换成任意类型。

[code]QDateTime dt = QDateTime::fromTime_t( (uint)getDateFromMacro(__DATE__));
this->setWindowTitle("HELLO WORLD " + tr("(") + dt.toString("yyyy/MM") + tr(")"));


显示效果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: