diff --git a/README.md b/README.md
index 30ec207c30c8ed3880a6fadcc8c3d2e0bbacba79_UkVBRE1FLm1k..4dae33e1744f23c64b1e043b58a0553fa04e6320_UkVBRE1FLm1k 100644
--- a/README.md
+++ b/README.md
@@ -658,5 +658,5 @@
 compatible with `isoformat()` in the standard library.
 
 ```python
->>> import orjson, datetime, pendulum
+>>> import orjson, datetime, zoneinfo
 >>> orjson.dumps(
@@ -662,5 +662,5 @@
 >>> orjson.dumps(
-    datetime.datetime(2018, 12, 1, 2, 3, 4, 9, tzinfo=pendulum.timezone('Australia/Adelaide'))
+    datetime.datetime(2018, 12, 1, 2, 3, 4, 9, tzinfo=zoneinfo.ZoneInfo('Australia/Adelaide'))
 )
 b'"2018-12-01T02:03:04.000009+10:30"'
 >>> orjson.dumps(
@@ -674,8 +674,9 @@
 ```
 
 `datetime.datetime` supports instances with a `tzinfo` that is `None`,
-`datetime.timezone.utc` or a timezone instance from
-the `pendulum`, `pytz`, or `dateutil`/`arrow` libraries.
+`datetime.timezone.utc`, a timezone instance from the python3.9+ `zoneinfo`
+module, or a timezone instance from the third-party `pendulum`, `pytz`, or
+`dateutil`/`arrow` libraries.
 
 `datetime.time` objects must not have a `tzinfo`.
 
diff --git a/test/test_datetime.py b/test/test_datetime.py
index 30ec207c30c8ed3880a6fadcc8c3d2e0bbacba79_dGVzdC90ZXN0X2RhdGV0aW1lLnB5..4dae33e1744f23c64b1e043b58a0553fa04e6320_dGVzdC90ZXN0X2RhdGV0aW1lLnB5 100644
--- a/test/test_datetime.py
+++ b/test/test_datetime.py
@@ -1,6 +1,7 @@
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 
 import datetime
+import sys
 import unittest
 
 import pytest
@@ -14,6 +15,9 @@
 except ImportError:
     pendulum = None  # type: ignore
 
+if sys.version_info >= (3, 9):
+    import zoneinfo
+
 
 class DatetimeTests(unittest.TestCase):
     def test_datetime_naive(self):
@@ -101,6 +105,46 @@
             b'["2018-06-01T02:03:04+00:00"]',
         )
 
+    @unittest.skipIf(sys.version_info < (3, 9), "zoneinfo not available")
+    def test_datetime_zoneinfo_positive(self):
+        self.assertEqual(
+            orjson.dumps(
+                [
+                    datetime.datetime(
+                        2018,
+                        1,
+                        1,
+                        2,
+                        3,
+                        4,
+                        0,
+                        tzinfo=zoneinfo.ZoneInfo("Asia/Shanghai"),
+                    )
+                ]
+            ),
+            b'["2018-01-01T02:03:04+08:00"]',
+        )
+
+    @unittest.skipIf(sys.version_info < (3, 9), "zoneinfo not available")
+    def test_datetime_zoneinfo_negative(self):
+        self.assertEqual(
+            orjson.dumps(
+                [
+                    datetime.datetime(
+                        2018,
+                        6,
+                        1,
+                        2,
+                        3,
+                        4,
+                        0,
+                        tzinfo=zoneinfo.ZoneInfo("America/New_York"),
+                    )
+                ]
+            ),
+            b'["2018-06-01T02:03:04-04:00"]',
+        )
+
     @pytest.mark.skipif(pendulum is None, reason="pendulum install broken on win")
     def test_datetime_pendulum_utc(self):
         """