'Hash.'

def __hash__(self):

    tzoff = self.utcoffset()
    if (not tzoff):
        return hash(self._getstate()[0])
    (h, m) = divmod((timedelta(hours=self.hour, minutes=self.minute) - tzoff), timedelta(hours=1))
    assert (not (m % timedelta(minutes=1))), 'whole    minute'
    m //= timedelta(minutes=1)
    if (0 <= h < 24):
        return hash(time(h, m, self.second, self.microsecond))
    return hash((h, m, self.second, self.microsecond))
