def timeframe_search(sensor_df_list):
    """Determines the timeframe for which data should be loaded.

    Locates the beginning and end date of each hourly averaged sensor dataframe
    and subsequently determines the eariest and latest date within all recorded
    sensor datasets

    Args:
        sensor_df_list (list): List of sensor dataframes

    Returns:
        (tuple): Two-element tuple containing:

            - **overall_begin** (*datetime.date object*): Earliest recorded date
              in the passed sensor dataframe list.
            - **overall_end** (*datetime.date object*): Latest recorded date in
              the passed sensor dataframe list.

    """
    # Determine begin and end timestamp for sensor datasets. Choose earliest
    # begin and latest end timestamp.
    begin_times = []
    end_times = []

    for df in sensor_df_list:

        begin_time = df.index.min()
        end_time = df.index.max()

        begin_times.append(begin_time)
        end_times.append(end_time)

    overall_begin = min(begin_times)
    overall_end = max(end_times)

    return overall_begin, overall_end