code: def fromNow(offset, dateObj=None):
      
  
      # We want to handle past dates as well as future
      future = True
      offset = offset.lstrip()
      if offset.startswith('-'):
          future = False
          offset = offset[1:].lstrip()
      if offset.startswith('+'):
          offset = offset[1:].lstrip()
  
      # Parse offset
      m = r.match(offset)
      if m is None:
          raise ValueError("offset string: '%s' does not parse" % offset)
  
      # In order to calculate years and months we need to calculate how many days
      # to offset the offset by, since timedelta only goes as high as weeks
      days = 0
      hours = 0
      minutes = 0
      seconds = 0
      if m.group('years'):
          years = int(m.group('years'))
          days += 365 * years
      if m.group('months'):
          months = int(m.group('months'))
          days += 30 * months
      days += int(m.group('days') or 0)
      hours += int(m.group('hours') or 0)
      minutes += int(m.group('minutes') or 0)
      seconds += int(m.group('seconds') or 0)
  
      # Offset datetime from utc
      delta = datetime.timedelta(
          weeks=int(m.group('weeks') or 0),
          days=days,
          hours=hours,
          minutes=minutes,
          seconds=seconds,
      )
  
      if not dateObj:
          dateObj = datetime.datetime.utcnow()
  
      return dateObj + delta if future else dateObj - delta
docs: Generate a `datetime.datetime` instance which is offset using a string.
      See the README.md for a full example, but offset could be '1 day' for
      a datetime object one day in the future