<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ParseTriggerEndTime(self, parser_mediator, trigger):
 """Parses the end time from a trigger. Args: parser_mediator (ParserMediator):
 mediates interactions between parsers and other components, such as storage and dfvfs. trigger (job_trigger):
 a trigger. Returns: dfdatetime.DateTimeValues: last run date and time or None if not available. """

    time_elements_tuple = (
        trigger.end_date.year, trigger.end_date.month,
        trigger.end_date.day_of_month, 0, 0, 0)

    date_time = None
    if time_elements_tuple != (0, 0, 0, 0, 0, 0):
      try:
        date_time = dfdatetime_time_elements.TimeElements(
            time_elements_tuple=time_elements_tuple)
        date_time.is_local_time = True
        # TODO: add functionality to dfdatetime to control precision.
        date_time._precision = dfdatetime_definitions.PRECISION_1_DAY  # pylint: disable=protected-access
      except ValueError:
        parser_mediator.ProduceExtractionWarning(
            'invalid trigger end time: {0!s}'.format(time_elements_tuple))

    return date_time