您的位置 首页 设计

C言语获取编译日期时刻和体系时刻

intGetCompileDateTime(char*szDateTime){constintMONTH_PER_YEAR=12;constcharszEnglishMonth[MONTH_PER_Y

int GetCompileDateTime(char *szDateTime)

{
const intMONTH_PER_YEAR=12;
const char szEnglishMonth[MONTH_PER_YEAR][4]={ “Jan”,”Feb”,”Mar”,”Apr”,”May”,”Jun”,”Jul”,”Aug”,”Sep”,”Oct”,”Nov”,”Dec”};
char szTmpDate[40]={0};
char szTmpTime[20]={0};
char szMonth[4]={0};
int iYear,iMonth,iDay,iHour,iMin,iSec;//,,

//获取编译日期、时刻
sprintf(szTmpDate,”%s”,__DATE__); //”Sep 18 2010″
sprintf(szTmpTime,”%s”,__TIME__);//”10:59:19″

sscanf(szTmpDate,”%s %d %d”,szMonth,&iDay,&iYear);
sscanf(szTmpTime,”%d:%d:%d”,&iHour,&iMin,&iSec);

for(int i=0;MONTH_PER_YEAR;i++)
{
if(strncmp(szMonth,szEnglishMonth[i],3)==0)
{
iMonth=i+1;
break;
}
}

printf(“%d,%d,%d,%d,%d,%d”,iYear,iMonth,iDay,iHour,iMin,iSec);
sprintf(szDateTime,”dddddd”,iYear,iMonth,iDay,iHour,iMin,iSec);
return 0;
}

typedefstruct
{
unsignedintYear;
unsignedintMonth;
unsignedintDate;
unsignedintHours;
unsignedintMinutes;
unsignedintSeconds;
}BuildDateTime;

constunsignedcharMonthStr[12][4]={“Jan”,“Feb”,“Mar”,“Apr”,“May”,“Jun”,“Jul”,“Aug”,“Sep”,“Oct”,“Nov”,”Dec”};

voidGetBuildDateTime(BuildDateTime*p_BuildDateTime)
{
unsignedchartemp_str[4]={0,0,0,0},i=0;

sscanf(__DATE__,“%s – M”,temp_str,&(p_BuildDateTime->Date),&(p_BuildDateTime->Year));
sscanf(__TIME__,“-:-:-“,&(p_BuildDateTime->Hours),&(p_BuildDateTime->Minutes),&(p_BuildDateTime->Seconds));
for(i=0;i<12;i++)
{
if(temp_str[0]==MonthStr[i][0]&&temp_str[1]==MonthStr[i][1]&&temp_str[2]==MonthStr[i][2])
{
p_BuildDateTime->Month=i+1;
break;
}
}
}

使用方法示例:
BuildDateTimeMyBuildDateTime;
GetBuildDateTime(&MyBuildDateTime);
RTC_YEAR=MyBuildDateTime.Year;
RTC_MONTH=MyBuildDateTime.Month;
RTC_DATE=MyBuildDateTime.Date;
RTC_HOURS=MyBuildDateTime.Hours;
RTC_MINUTES=MyBuildDateTime.Minutes;
RTC_SECONDS=MyBuildDateTime.Seconds;

__LINE__ 当时句子地点的行号, 以10进制整数标示.
__FILE__ 当时源文件的文件名, 以字符串常量标示.
__DATE__ 程序被编译的日期, 以”Mmm dd yyyy”格局的字符串标示.
__TIME__ 程序被编译的时刻, 以”hh:mm:ss”格局的字符串标示, 该时刻由asctime回来.

__STDC__ 假如当时编译器契合ISO规范, 那么该宏的值为1
__STDC_VERSION__ 假如当时编译器契合C89, 那么它被界说为199409L, 假如契合C99, 那么被界说为199901L.

__STDC_HOSTED__ 假如当时体系是”本地体系(hosted)”, 那么它被界说为1. 本地体系表明当时体系具有完好的规范C库.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/257810.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部