'Cast DATE values (year/month/day) from input (to datetime.datetime).
Casts DATE input values formulated as ISO string or time tuple inputs.
Args:
values: either a single string with ISO time representation or 3
integer valued date tuple (year, month, day).
Returns:
datetime.datetime value parsed from the input values.'

def __CastDate(self, values):

    if (len(values) == 1):
        value = self.__EncodeIfNeeded(values[0])
        if isinstance(value, str):
            try:
                time_tuple = time.strptime(value, '%Y-%m-%d')[0:6]
            except ValueError as err:
                self.__CastError('DATE', values, err)
        else:
            self.__CastError('DATE', values, 'Single    input    value    not    a    string')
    elif (len(values) == 3):
        time_tuple = (values[0], values[1], values[2], 0, 0, 0)
    else:
        self.__CastError('DATE', values, 'function    takes    1    string    or    3    integer    values')
    try:
        return datetime.datetime(*time_tuple)
    except ValueError as err:
        self.__CastError('DATE', values, err)
