diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index 5bf4cf13ae..39a389ae63 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -10,7 +10,7 @@ import importlib
 import os
 import time
 import warnings
-from pathlib import Path
+import zoneinfo
 
 from django.conf import global_settings
 from django.core.exceptions import ImproperlyConfigured
@@ -276,11 +276,9 @@ class Settings:
             )
 
         if hasattr(time, "tzset") and self.TIME_ZONE:
-            # When we can, attempt to validate the timezone. If we can't find
-            # this file, no check happens and it's harmless.
-            zoneinfo_root = Path("/usr/share/zoneinfo")
-            zone_info_file = zoneinfo_root.joinpath(*self.TIME_ZONE.split("/"))
-            if zoneinfo_root.exists() and not zone_info_file.exists():
+            try:
+                zoneinfo.ZoneInfo(self.TIME_ZONE)
+            except zoneinfo.ZoneInfoNotFoundError:
                 raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE)
             # Move the time zone info into os.environ. See ticket #2315 for why
             # we don't do this unconditionally (breaks Windows).
