def _evalDT(self, datetimeString, sourceTime):
ctx = self.currentContext<EOL>s = datetimeString.strip()<EOL>if sourceTime is None:<EOL><INDENT>sourceTime = _parse_date_rfc822(s)<EOL>debug and log.debug(<EOL>'<STR_LIT>', str(sourceTime))<EOL>if sourceTime is not None:<EOL><INDENT>(yr, mth, dy, hr, mn, sec, wd, yd, isdst, _) = sourceTime<EOL>ctx.updateAccuracy(ctx.ACU_YEAR, ctx.ACU_MONTH, ctx.ACU_DAY)<EOL>if hr != <NUM_LIT:0> and mn != <NUM_LIT:0> and sec != <NUM_LIT:0>:<EOL><INDENT>ctx.updateAccuracy(ctx.ACU_HOUR, ctx.ACU_MIN, ctx.ACU_SEC)<EOL><DEDENT>sourceTime = (yr, mth, dy, hr, mn, sec, wd, yd, isdst)<EOL><DEDENT><DEDENT>if sourceTime is None:<EOL><INDENT>sourceTime = _parse_date_w3dtf(s)<EOL>if sourceTime is not None:<EOL><INDENT>ctx.updateAccuracy(ctx.ACU_YEAR, ctx.ACU_MONTH, ctx.ACU_DAY,<EOL>ctx.ACU_HOUR, ctx.ACU_MIN, ctx.ACU_SEC)<EOL><DEDENT><DEDENT>if sourceTime is None:<EOL><INDENT>sourceTime = time.localtime()<EOL><DEDENT>return sourceTime<EOL>
Calculate the datetime from known format like RFC822 or W3CDTF

Examples handled::
    RFC822, W3CDTF formatted dates
    HH:MM[:SS][ am/pm]
    MM/DD/YYYY
    DD MMMM YYYY

@type  datetimeString: string
@param datetimeString: text to try and parse as more "traditional"
                       date/time text
@type  sourceTime:     struct_time
@param sourceTime:     C{struct_time} value to use as the base

@rtype:  datetime
@return: calculated C{struct_time} value or current C{struct_time}
         if not parsed