C语言之自定义 DATE 格式

                       

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,如下代码:

/** * @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);}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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

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

显示效果为:
这里写图片描述

           

猜你喜欢

转载自blog.csdn.net/qq_44925290/article/details/89672894