def METHOD_NAME(self, config, **additional_parameters) -> dt.datetime:
    """
    Evaluates and returns the datetime
    :param config: The user-provided configuration as specified by the source's spec
    :param additional_parameters: Additional arguments to be passed to the strings for interpolation
    :return: The evaluated datetime
    """
    # We apply a default datetime format here instead of at instantiation, so it can be set by the parent first
    datetime_format = self._datetime_format
    if not datetime_format:
        datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
    time = self._parser.parse(str(self.datetime.eval(config, **additional_parameters)), datetime_format)
    if self.min_datetime:
        min_time = str(self.min_datetime.eval(config, **additional_parameters))
        if min_time:
            min_time = self._parser.parse(min_time, datetime_format)
            time = max(time, min_time)
    if self.max_datetime:
        max_time = str(self.max_datetime.eval(config, **additional_parameters))
        if max_time:
            max_time = self._parser.parse(max_time, datetime_format)
            time = min(time, max_time)
    return time