如何判断一个字符串是不是合法的日期格式?(YYYYMMDD)怎样实现这个函数?VC6.0,MFC,不借助其他软件。BOOL IsValidDateString( const CString& szDate )
{
  //....
}使得IsValidDateString( "20050517" ) == TRUE
IsValidDateString( "20041131" ) == FALSEIsValidDateString( "20050229" ) == FALSE
IsValidDateString( "20040229" ) == TRUE

解决方案 »

  1.   

    COleDateTime::ParseDateTime
    BOOL ParseDateTime( LPCTSTR lpszDate, DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT );
    throw( CMemoryException );
    throw( COleException );
      

  2.   

    BOOL IsValidDateString( const CString& szDate )
    {
    COleDateTime odt;
    if(szDate.GetLength()!=8)return FALSE;
        return odt.ParseDateTime(szDate.Left(4)+"-"+szDate.Mid(4,2)+"-"+szDate.Mid(6));
    }
      

  3.   

    谢谢vcmute(横秋),COleDateTime::ParseDateTime我看过。但我再补充一点,我只要求YYYYMMDD格式,其他格式也是错的。IsValidDateString( "2005-5-17" ) == FALSE
      

  4.   

    全是数字用if(szDate.SpanIncluding("0123456789")!=szDate)return FALSE;判断
    BOOL IsValidDateString( const CString& szDate )
    {
    COleDateTime odt;
    if(szDate.GetLength()!=8)return FALSE;
    if(szDate.SpanIncluding("0123456789")!=szDate)return FALSE;
        return odt.ParseDateTime(szDate.Left(4)+"-"+szDate.Mid(4,2)+"-"+szDate.Mid(6));
    }