code: def _ProduceEvent(
        self, parser_mediator, event_data, properties, property_name,
        timestamp_description, error_description):
      
      time_string = properties.get(property_name, None)
      if not time_string:
        return
  
      # Date and time strings are in ISO 8601 format either with 1 second
      # or 100th nano second precision. For example:
      # 2012-11-07T23:29:00Z
      # 2012-03-05T20:40:00.0000000Z
      date_time = dfdatetime_time_elements.TimeElements()
  
      try:
        date_time.CopyFromStringISO8601(time_string)
  
        event = time_events.DateTimeValuesEvent(date_time, timestamp_description)
        parser_mediator.ProduceEventWithEventData(event, event_data)
      except ValueError as exception:
        parser_mediator.ProduceExtractionWarning(
            'unsupported {0:s}: {1:s} with error: {2!s}'.format(
                error_description, time_string, exception))
docs: Produces an event.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        event_data (OpenXMLEventData): event data.
        properties (dict[str, object]): properties.
        property_name (str): name of the date and time property.
        timestamp_description (str): description of the meaning of the timestamp
            value.
        error_description (str): description of the meaning of the timestamp
            value for error reporting purposes.