A lazy method to parse anything to datetime.

        If input data type is:

        - string: parse datetime from it
        - integer: use from ordinal
        - date: use date part and set hour, minute, second to zero
        - datetime: just return it

def parse_datetime(self, value):
        """
        A lazy method to parse anything to datetime.

        If input data type is:

        - string: parse datetime from it
        - integer: use from ordinal
        - date: use date part and set hour, minute, second to zero
        - datetime: just return it
        """
        if isinstance(value, sixmini.string_types):
            return self.str2datetime(value)
        elif value is None:
            raise TypeError("Unable to parse datetime from %r" % value)
        elif isinstance(value, sixmini.integer_types):
            return from_utctimestamp(value)
        elif isinstance(value, float):
            return from_utctimestamp(value)
        elif isinstance(value, datetime):
            return value
        elif isinstance(value, date):
            return datetime(value.year, value.month, value.day)
        else:
            raise ValueError("Unable to parse datetime from %r" % value)