新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C語言獲取編譯日期時間和系統時間

        C語言獲取編譯日期時間和系統時間

        作者: 時間:2016-11-27 來源:網絡 收藏
        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庫.

        本文引用地址:http://www.104case.com/article/201611/322574.htm



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 菏泽市| 开鲁县| 衡阳市| 安康市| 建水县| 长垣县| 肇东市| 泸溪县| 油尖旺区| 麻城市| 于田县| 忻州市| 宜春市| 垫江县| 莎车县| 中西区| 嘉善县| 双城市| 灵璧县| 诸城市| 乐平市| 定结县| 金平| 昆明市| 临邑县| 宿松县| 景泰县| 长武县| 岳阳县| 安新县| 黑水县| 浦江县| 黔南| 大新县| 阿巴嘎旗| 永寿县| 涿州市| 洛阳市| 大英县| 张掖市| 青龙|