def dusk(self, date=None, local=True, use_elevation=True):
        """Calculates the dusk time (the time in the evening when the sun is a
        certain number of degrees below the horizon. By default this is 6
        degrees but can be changed by setting the
        :attr:`solar_depression` property.)

        :param date: The date for which to calculate the dusk time.
                     If no date is specified then the current date will be used.
        :type date:  :class:`~datetime.date`

        :param local: True  = Time to be returned in location's time zone;
                      False = Time to be returned in UTC.
                      If not specified then the time will be returned in local time
        :type local:  bool

        :param use_elevation: True  = Return times that allow for the location's elevation;
                              False = Return times that don't use elevation.
                              If not specified then times will take elevation into account.
        :type use_elevation:  bool

        :returns: The date and time at which dusk occurs.
        :rtype: :class:`~datetime.datetime`
        """

        if local and self.timezone is None:
            raise ValueError("Local time requested but Location has no timezone set.")

        if self.astral is None:
            self.astral = Astral()

        if date is None:
            date = datetime.date.today()

        elevation = self.elevation if use_elevation else 0
        dusk = self.astral.dusk_utc(date, self.latitude, self.longitude, observer_elevation=elevation)

        if local:
            return dusk.astimezone(self.tz)
        else:
            return dusk