'Parse the string date.
Patterns:
- HH:MI:SS
- HH:MI:SS(z|Z)
- HH:MI:SS.ms
- HH:MI:SS.ms(z|Z)
- HH:MI:SS(+|-)06:00
- HH:MI:SS.ms(+|-)06:00
@param s: A time string.
@type s: str
@return: A time object.
@rtype: B{datetime}.I{time}'

def __parse(self, s):

    try:
        offset = None
        part = Timezone.split(s)
        (hour, minute, second) = part[0].split(':', 2)
        hour = int(hour)
        minute = int(minute)
        (second, ms) = self.__second(second)
        if (len(part) == 2):
            self.offset = self.__offset(part[1])
        if (ms is None):
            return dt.time(hour, minute, second)
        else:
            return dt.time(hour, minute, second, ms)
    except:
        log.debug(s, exec_info=True)
        raise ValueError, ('Invalid    format    "%s"' % s)
