Returns the display name for the inputted date, given the list of options.
    
    :param      date    | <datetime.date>
                options | <projex.dates.Names>
                format  | <str>
    
    :return     <str>

def displayName(date, options=None, format='%b %d, %Y'):
    """
    Returns the display name for the inputted date, given the list of options.
    
    :param      date    | <datetime.date>
                options | <projex.dates.Names>
                format  | <str>
    
    :return     <str>
    """
    # map from Qt information
    if type(date).__name__ in ('QDate', 'QDateTime', 'QTime'):
        date = date.toPython()

    if isinstance(date, datetime.datetime):
        time = ' @ ' + date.strftime('%I:%M%p').strip('0M').lower()
        date = date.date()
    else:
        time = ''

    today = datetime.date.today()
    delta = date - today

    if delta.days == 0:
        return 'Today' + time
    elif delta.days == -1:
        return 'Yesterday' + time
    elif delta.days == 1:
        return 'Tomorrow' + time
    elif abs(delta.days) < 8:
        # look for different weeks
        if date.isocalendar()[1] != today.isocalendar()[1]:
            qualifier = 'Last ' if delta.days < 0 else 'Next '
        else:
            qualifier = ''

        return qualifier + date.strftime('%A') + time
    else:
        return date.strftime(format)