VS2008中预定义宏__DATE__输出字串为"Feb 9 2012",如何让其变为"2012-2-9"?
RT,c或c++中有没现成函数可以进行转换或提取出年月日?
不考虑自己写函数转换。
这个是ansi C的范畴么?
[解决办法]
自己解析
自己的,你试试改改。
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());}