Convert string from __DATE__ into a time_t

后端 未结 7 984
小蘑菇
小蘑菇 2021-02-07 18:25

I\'m trying to convert the string produced from the __DATE__ macro into a time_t. I don\'t need a full-blown date/time parser, something that only han

7条回答
  •  北荒
    北荒 (楼主)
    2021-02-07 18:44

    Basing on the description given at gcc.gnu.org the build date can be obtain at the compilation time using following macros.

    #define BUILDTM_YEAR (\
        __DATE__[7] == '?' ? 1900 \
        : (((__DATE__[7] - '0') * 1000 ) \
        + (__DATE__[8] - '0') * 100 \
        + (__DATE__[9] - '0') * 10 \
        + __DATE__[10] - '0'))
    
    #define BUILDTM_MONTH (\
        __DATE__ [2] == '?' ? 1 \
        : __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? 1 : 6) \
        : __DATE__ [2] == 'b' ? 2 \
        : __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 3 : 4) \
        : __DATE__ [2] == 'y' ? 5 \
        : __DATE__ [2] == 'l' ? 7 \
        : __DATE__ [2] == 'g' ? 8 \
        : __DATE__ [2] == 'p' ? 9 \
        : __DATE__ [2] == 't' ? 10 \
        : __DATE__ [2] == 'v' ? 11 \
        : 12)
    
    #define BUILDTM_DAY (\
        __DATE__[4] == '?' ? 1 \
        : ((__DATE__[4] == ' ' ? 0 : \
        ((__DATE__[4] - '0') * 10)) + __DATE__[5] - '0'))
    

提交回复
热议问题