diff --git a/ApplicationCode/Application/Tools/RiaDateStringParser.cpp b/ApplicationCode/Application/Tools/RiaDateStringParser.cpp index 4f61fbd12c..3a84a114f8 100644 --- a/ApplicationCode/Application/Tools/RiaDateStringParser.cpp +++ b/ApplicationCode/Application/Tools/RiaDateStringParser.cpp @@ -47,11 +47,17 @@ QDateTime RiaDateStringParser::parseDateString( const std::string& dateString ) tryParseDayFirst( dateString, year, month, day ) || tryParseMonthFirst( dateString, year, month, day ); } - else if ( !RiaStdStringTools::containsAlphabetic( dateString ) ) + if ( !parsedOk ) { - parsedOk = tryParseYearFirstNoSeparators( dateString, year, month, day ) || - tryParseDayFirstNoSeparators( dateString, year, month, day ) || - tryParseMonthFirstNoSeparators( dateString, year, month, day ); + auto firstNumerical = dateString.find_first_of( "0123456789" ); + if ( firstNumerical != std::string::npos ) + { + std::string subString = dateString.substr( firstNumerical ); + + parsedOk = tryParseYearFirstNoSeparators( subString, year, month, day ) || + tryParseDayFirstNoSeparators( subString, year, month, day ) || + tryParseMonthFirstNoSeparators( subString, year, month, day ); + } } QDateTime dt; diff --git a/ApplicationCode/UnitTests/RiaDateStringParser-Test.cpp b/ApplicationCode/UnitTests/RiaDateStringParser-Test.cpp index 9b80c6815f..8d2d6e6400 100644 --- a/ApplicationCode/UnitTests/RiaDateStringParser-Test.cpp +++ b/ApplicationCode/UnitTests/RiaDateStringParser-Test.cpp @@ -111,7 +111,7 @@ TEST( RiaDateStringParserTest, ParseWithoutSeparators ) may2ndDT.setTimeSpec( RiaQDateTimeTools::currentTimeSpec() ); feb5thDT.setTimeSpec( RiaQDateTimeTools::currentTimeSpec() ); - std::vector may2ndStrings = {"20110502", "02052011"}; + std::vector may2ndStrings = {"20110502", "02052011", "Date_20110502"}; for ( auto may2ndString : may2ndStrings ) { QDateTime parsedDate = RiaDateStringParser::parseDateString( may2ndString );