def timetuple(self):
        """
        It's equivalent to:

            >>> time.struct_time((d.year, d.month, d.day, d.hour, d.minute, d.second, d.weekday(), dayofyear, [-1|1|0])) # doctest: +SKIP
            time.struct_time(tm_year=2015, tm_mon=7, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=209, tm_isdst=-1)


        The tm_isdst flag of the result is set according to the dst() method: `tzinfo`
        is None or dst() returns None, tm_isdst is set to -1; else if dst()
        returns a non-zero value, tm_isdst is set to 1; else tm_isdst is set to 0.


        :return: A :py:class:`time.struct_time` such as returned by time.localtime().
        :rtype: :py:class:`time.struct_time`
        """
        return time.struct_time((
            self.year,
            self.month,
            self.day,
            0,
            0,
            0,
            self.weekday(),
            self.dayofyear(),
            -1
        ))
It's equivalent to:

            >>> time.struct_time((d.year, d.month, d.day, d.hour, d.minute, d.second, d.weekday(), dayofyear, [-1|1|0])) # doctest: +SKIP
            time.struct_time(tm_year=2015, tm_mon=7, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=209, tm_isdst=-1)


        The tm_isdst flag of the result is set according to the dst() method: `tzinfo`
        is None or dst() returns None, tm_isdst is set to -1; else if dst()
        returns a non-zero value, tm_isdst is set to 1; else tm_isdst is set to 0.


        :return: A :py:class:`time.struct_time` such as returned by time.localtime().
        :rtype: :py:class:`time.struct_time`