目 录CONTENT

文章目录

记录点 (二):Hightec编译器获取系统时间方式

moke
2024-07-11 / 0 评论 / 0 点赞 / 26 阅读 / 0 字

1、概述

        近期做项目发现,大部分时候需要查询以下软件是什么时间编译成功的,这样子一方面根据版本号来确定软件状态,一方面可以通过时间来确定软件状态。

2、使用方法

2.1、定义年

获取年
/* SW Build Date */
#define ASW_VER_u32GET_SW_BUILD_YEAR()      \
    (                                       \
        (__DATE__[ 7] - '0') * 1000 +       \
        (__DATE__[ 8] - '0') *  100 +       \
        (__DATE__[ 9] - '0') *   10 +       \
        (__DATE__[10] - '0')                \
    )

2.2、获取日

#define ASW_VER_u8GET_SW_BUILD_DAY()                             \
    (                                                             \
        ((__DATE__[4] >= '0') ? (__DATE__[4] - '0') * 10 : 0) +   \
        (__DATE__[5] - '0')                                       \
    )

2.3、获取月份

#define BUILD_MONTH_IS_JAN ((__DATE__[0] == 'J') && (__DATE__[1] == 'a') && (__DATE__[2] == 'n'))
#define BUILD_MONTH_IS_FEB ( __DATE__[0] == 'F' )
#define BUILD_MONTH_IS_MAR ((__DATE__[0] == 'M') && (__DATE__[1] == 'a') && (__DATE__[2] == 'r'))
#define BUILD_MONTH_IS_APR ((__DATE__[0] == 'A') && (__DATE__[1] == 'p'))
#define BUILD_MONTH_IS_MAY ((__DATE__[0] == 'M') && (__DATE__[1] == 'a') && (__DATE__[2] == 'y'))
#define BUILD_MONTH_IS_JUN ((__DATE__[0] == 'J') && (__DATE__[1] == 'u') && (__DATE__[2] == 'n'))
#define BUILD_MONTH_IS_JUL ((__DATE__[0] == 'J') && (__DATE__[1] == 'u') && (__DATE__[2] == 'l'))
#define BUILD_MONTH_IS_AUG ((__DATE__[0] == 'A') && (__DATE__[1] == 'u'))
#define BUILD_MONTH_IS_SEP ( __DATE__[0] == 'S' )
#define BUILD_MONTH_IS_OCT ( __DATE__[0] == 'O' )
#define BUILD_MONTH_IS_NOV ( __DATE__[0] == 'N' )
#define BUILD_MONTH_IS_DEC ( __DATE__[0] == 'D' )
#define ASW_VER_u8GET_SW_BUILD_MONTH()   \
    (                                     \
        (BUILD_MONTH_IS_JAN) ?  1 :       \
        (BUILD_MONTH_IS_FEB) ?  2 :       \
        (BUILD_MONTH_IS_MAR) ?  3 :       \
        (BUILD_MONTH_IS_APR) ?  4 :       \
        (BUILD_MONTH_IS_MAY) ?  5 :       \
        (BUILD_MONTH_IS_JUN) ?  6 :       \
        (BUILD_MONTH_IS_JUL) ?  7 :       \
        (BUILD_MONTH_IS_AUG) ?  8 :       \
        (BUILD_MONTH_IS_SEP) ?  9 :       \
        (BUILD_MONTH_IS_OCT) ? 10 :       \
        (BUILD_MONTH_IS_NOV) ? 11 :       \
        (BUILD_MONTH_IS_DEC) ? 12 :       \
        /* error default */  99           \
)

2.4、使用方法

    uint16 u16SwBuildYear  = ASW_VER_u32GET_SW_BUILD_YEAR() % 100;  //取后2位
    uint16 u16SwBuildMonth = ASW_VER_u8GET_SW_BUILD_MONTH();
    uint16 u16SwBuildDay   = ASW_VER_u8GET_SW_BUILD_DAY();
    YEEEEEAR = u16SwBuildYear;
    MONDDDDD = u16SwBuildMonth;
    Dayyyyss = u16SwBuildDay;

2.5、测试结果

博主关闭了所有页面的评论