首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VS2008中预定义宏_DATE_输出字串为"Feb 9 2012"怎么让其变为"2012-2-9"

2012-03-17 
VS2008中预定义宏__DATE__输出字串为Feb 92012,如何让其变为2012-2-9?RT,c或c++中有没现成函数可以进

VS2008中预定义宏__DATE__输出字串为"Feb 9 2012",如何让其变为"2012-2-9"?
RT,c或c++中有没现成函数可以进行转换或提取出年月日?
不考虑自己写函数转换。

这个是ansi C的范畴么?

[解决办法]
自己解析
自己的,你试试改改。

C/C++ code
DWORD TimeString2Time(char *szDate,char *szTime){    if( ( strlen("Jan 02 2006" )!= strlen(szDate) ) || ( strlen("02:02:02") != strlen(szTime) ) )    {        return 0;     }    char *szMonthDesc[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};    int nSpaceIndexD[4]={0};    nSpaceIndexD[1]= 3;    nSpaceIndexD[2]= 6;    nSpaceIndexD[3]= 11;    int nSpaceIndexT[4]={0};    nSpaceIndexT[1]= 2;    nSpaceIndexT[2]= 5;        nSpaceIndexT[3]= 8;    if(szDate[nSpaceIndexD[1]] != ' ' || szDate[nSpaceIndexD[2]] != ' ')        return 0;    if(szTime[nSpaceIndexT[1]] != ':' || szTime[nSpaceIndexT[2]] !=':')        return 0;    //分析各个字段的值    int nYear=-1,nMonth = -1,nDay=-1,nHour = -1,nMin = -1,nSec=-1;    char szDesc[10]={0};    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szDate[nSpaceIndexD[0]],nSpaceIndexD[1]-nSpaceIndexD[0]);    for(int i=0;i<12;i++)    {        if(stricmp(szMonthDesc[i],szDesc)==0)        {            nMonth = i+1;            break;        }    }    if(nMonth == -1)        return 0;    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szDate[nSpaceIndexD[1]+1],nSpaceIndexD[2]-nSpaceIndexD[1]-1);    nDay = atoi(szDesc);    if(nDay > 31 || nDay < 0)        return 0;    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szDate[nSpaceIndexD[2]+1],nSpaceIndexD[3]-nSpaceIndexD[2]-1);    nYear = atoi(szDesc);    if(nYear > 2038 || nYear < 2000)        return 0;    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szTime[nSpaceIndexT[0]], nSpaceIndexT[1]-nSpaceIndexT[0]);    nHour = atoi(szDesc);    if(nHour > 30 ||  nHour < 0)        return 0;    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szTime[nSpaceIndexT[1]+1],nSpaceIndexT[2]-nSpaceIndexT[1]-1);    nMin = atoi(szDesc);    if(nMin > 80 || nMin < 0)        return 0;    memset(szDesc,0,sizeof(szDesc));    memcpy(szDesc,&szTime[nSpaceIndexT[2]+1],nSpaceIndexT[3]-nSpaceIndexT[2]-1);    nSec = atoi(szDesc);    if(nSec > 80 || nSec < 0)        return 0;    CTime mTime(nYear,nMonth,nDay,nHour,nMin,nSec);//在这里。nYear,nMonth,nDay,nHour,nMin,nSec    return (DWORD) (mTime.GetTime());} 

热点排行