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;