'@param date: The value of the object.
@type date: (datetime|str)
@raise ValueError: When I{tm} is invalid.'

def __init__(self, date):

    if isinstance(date, dt.datetime):
        Date.__init__(self, date.date())
        Time.__init__(self, date.time())
        self.datetime = dt.datetime.combine(self.date, self.time)
        return
    if isinstance(date, basestring):
        part = date.split('T')
        Date.__init__(self, part[0])
        Time.__init__(self, part[1], 0)
        self.datetime = dt.datetime.combine(self.date, self.time)
        self.__adjust()
        return
    raise ValueError, type(date)
