code: def _evalDT(self, datetimeString, sourceTime):
          
          ctx = self.currentContext
          s = datetimeString.strip()
  
          # Given string date is a RFC822 date
          if sourceTime is None:
              sourceTime = _parse_date_rfc822(s)
              debug and log.debug(
                  'attempt to parse as rfc822 - %s', str(sourceTime))
  
              if sourceTime is not None:
                  (yr, mth, dy, hr, mn, sec, wd, yd, isdst, _) = sourceTime
                  ctx.updateAccuracy(ctx.ACU_YEAR, ctx.ACU_MONTH, ctx.ACU_DAY)
  
                  if hr != 0 and mn != 0 and sec != 0:
                      ctx.updateAccuracy(ctx.ACU_HOUR, ctx.ACU_MIN, ctx.ACU_SEC)
  
                  sourceTime = (yr, mth, dy, hr, mn, sec, wd, yd, isdst)
  
          # Given string date is a W3CDTF date
          if sourceTime is None:
              sourceTime = _parse_date_w3dtf(s)
  
              if sourceTime is not None:
                  ctx.updateAccuracy(ctx.ACU_YEAR, ctx.ACU_MONTH, ctx.ACU_DAY,
                                     ctx.ACU_HOUR, ctx.ACU_MIN, ctx.ACU_SEC)
  
          if sourceTime is None:
              sourceTime = time.localtime()
  
          return sourceTime
docs: 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