def replace_date(source_date, target_date):
    """Replaces `source_date` with respect to `target_date`, replacing year,
    month, day while preserving all other time information. The purpose of this
    method is to provide valid date information for recurring reservations.
    """
    return source_date.replace(
        year=target_date.year, month=target_date.month, day=target_date.day)