'Construct a L{FixedOffsetTimeZone} from an offset described by sign
(\'+\' or \'-\'), hours, and minutes.
@note: For protocol compatibility with AMP, this method never uses \'Z\'
@param sign: A string describing the positive or negative-ness of the
offset.
@param hours: The number of hours in the offset.
@type hours: L{int}
@param minutes: The number of minutes in the offset
@type minutes: L{int}
@return: A time zone with the given offset, and a name describing the
offset.
@rtype: L{FixedOffsetTimeZone}'

@classmethod
def fromSignHoursMinutes(cls, sign, hours, minutes):

    name = ('%s%02i:%02i' % (sign, hours, minutes))
    if (sign == '-'):
        hours = (- hours)
        minutes = (- minutes)
    elif (sign != '+'):
        raise ValueError(('Invalid    sign    for    timezone    %r' % (sign,)))
    return cls(timedelta(hours=hours, minutes=minutes), name)
