code: def to_python(self, value):
          
          if value in validators.EMPTY_VALUES:
              return None
          if isinstance(value, datetime.datetime):
              return value
          if isinstance(value, datetime.date):
              return datetime.datetime(value.year, value.month, value.day)
          if isinstance(value, list):
              # Input comes from a 2 SplitDateTimeWidgets, for example. So,
              # it's four components: start date and time, and end date and time.
              if len(value) != 4:
                  raise ValidationError(self.error_messages['invalid'])
              if value[0] in validators.EMPTY_VALUES and value[1] in \
                      validators.EMPTY_VALUES and value[2] in \
                      validators.EMPTY_VALUES and value[3] in \
                      validators.EMPTY_VALUES:
                  return None
              start_value = '%s %s' % tuple(value[:2])
              end_value = '%s %s' % tuple(value[2:])
  
          start_datetime = None
          end_datetime = None
          for format in self.input_formats or formats.get_format(\
                  'DATETIME_INPUT_FORMATS'):
              try:
                  start_datetime = datetime.datetime(*time.strptime(\
                          start_value, format)[:6])
              except ValueError:
                  continue
  
          for format in self.input_formats or formats.get_format(\
                  'DATETIME_INPUT_FORMATS'):
              try:
                  end_datetime = datetime.datetime(*time.strptime(\
                          end_value, format)[:6])
              except ValueError:
                  continue
  
          return (start_datetime, end_datetime)
docs: Validates that the input can be converted to a datetime. Returns a
          Python datetime.datetime object.