def add_date_features(df, date_col):
    """
    Add date related features generated into the feature set.

    :param df: Input feature dataframe
    :param date_col: the column name of date column
    :return: 1) A dataframe with added date features 2) Added feature list
    """
    output_df = df.copy()

    output_df['Year'] = df[date_col].dt.year.astype('category')
    output_df['Month'] = df[date_col].dt.month.astype('category')
    output_df['Quarter'] = (df[date_col].dt.month - 1) // 3 + 1
    output_df['Quarter'] = df[date_col].astype('category')

    feature_lst = ['Year', 'Month', 'Quarter']

    return output_df, feature_lst