text: Title: Improve parsing of DateTimeWidget
  Body: I think the following code could be improved, by adding a break after `strptime` has returned without an exception:
  https://github.com/django-import-export/django-import-export/blob/029396ddeb2c02e651f3f2b6cc666fe0eb8a647a/import_export/widgets.py#L290-L294
  The current version always iterates through all patterns (by default [these](https://docs.djangoproject.com/en/5.0/ref/settings/#datetime-input-formats)), even if for example the first one already matched.
  
  So the changed `clean()` would look like this:
  ```python
  def clean(self, value, row=None, **kwargs):
      dt = None
      if not value:
          return None
      if isinstance(value, datetime):
          dt = value
      else:
          for format_ in self.formats:
              try:
                  dt = datetime.strptime(value, format_)
                  break  # CHANGE
              except (ValueError, TypeError):
                  continue
      if dt:
          if settings.USE_TZ and timezone.is_naive(dt):
              dt = timezone.make_aware(dt)
          return dt
      raise ValueError("Enter a valid date/time.")
  ```
  
  This would the be analog to the processing of the `DateWidget`, which also returns when `strptime` executes successfully:
  https://github.com/django-import-export/django-import-export/blob/029396ddeb2c02e651f3f2b6cc666fe0eb8a647a/import_export/widgets.py#L244-L248