def _partialParseDateStr(self, s, sourceTime):
parseStr = None<EOL>chunk1 = chunk2 = '<STR_LIT>'<EOL>m = self.ptc.CRE_DATE3.search(s)<EOL>if m is not None:<EOL><INDENT>if (m.group('<STR_LIT:date>') != s):<EOL><INDENT>mStart = m.start('<STR_LIT:date>')<EOL>mEnd = m.end('<STR_LIT:date>')<EOL>fTime = False<EOL>mm = self.ptc.CRE_TIMEHMS2.search(s)<EOL>mYear = m.group('<STR_LIT>')<EOL>if mm is not None and mYear is not None:<EOL><INDENT>fTime = True<EOL><DEDENT>else:<EOL><INDENT>mm = self.ptc.CRE_TIMEHMS.search(s)<EOL>if mm is not None and mYear is None:<EOL><INDENT>fTime = True<EOL><DEDENT><DEDENT>if fTime:<EOL><INDENT>hoursStart = mm.start('<STR_LIT>')<EOL>if hoursStart < m.end('<STR_LIT>'):<EOL><INDENT>mEnd = hoursStart<EOL><DEDENT><DEDENT>parseStr = s[mStart:mEnd]<EOL>chunk1 = s[:mStart]<EOL>chunk2 = s[mEnd:]<EOL>s = '<STR_LIT>' % (chunk1, chunk2)<EOL><DEDENT>else:<EOL><INDENT>parseStr = s<EOL>s = '<STR_LIT>'<EOL><DEDENT><DEDENT>if parseStr:<EOL><INDENT>debug and log.debug(<EOL>'<STR_LIT>', parseStr, chunk1, chunk2)<EOL>sourceTime = self._evalDateStr(parseStr, sourceTime)<EOL><DEDENT>return s, sourceTime, bool(parseStr)<EOL>
test if giving C{s} matched CRE_DATE3, used by L{parse()}

@type  s:          string
@param s:          date/time text to evaluate
@type  sourceTime: struct_time
@param sourceTime: C{struct_time} value to use as the base

@rtype:  tuple
@return: tuple of remained date/time text, datetime object and
         an boolean value to describ if matched or not