Closes #27661: Added tzinfo keyword argument to datetime.combine.
diff --git a/Lib/datetime.py b/Lib/datetime.py
index df8eb66..9f942a2 100644
--- a/Lib/datetime.py
+++ b/Lib/datetime.py
@@ -1479,15 +1479,17 @@
         return cls.utcfromtimestamp(t)
 
     @classmethod
-    def combine(cls, date, time):
+    def combine(cls, date, time, tzinfo=True):
         "Construct a datetime from a given date and a given time."
         if not isinstance(date, _date_class):
             raise TypeError("date argument must be a date instance")
         if not isinstance(time, _time_class):
             raise TypeError("time argument must be a time instance")
+        if tzinfo is True:
+            tzinfo = time.tzinfo
         return cls(date.year, date.month, date.day,
                    time.hour, time.minute, time.second, time.microsecond,
-                   time.tzinfo, fold=time.fold)
+                   tzinfo, fold=time.fold)
 
     def timetuple(self):
         "Return local time tuple compatible with time.localtime()."
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py
index 02deb7c..e71f3aa 100644
--- a/Lib/test/datetimetester.py
+++ b/Lib/test/datetimetester.py
@@ -2117,11 +2117,22 @@
         self.assertRaises(TypeError, combine) # need an arg
         self.assertRaises(TypeError, combine, d) # need two args
         self.assertRaises(TypeError, combine, t, d) # args reversed
-        self.assertRaises(TypeError, combine, d, t, 1) # too many args
+        self.assertRaises(TypeError, combine, d, t, 1) # wrong tzinfo type
+        self.assertRaises(TypeError, combine, d, t, 1, 2)  # too many args
         self.assertRaises(TypeError, combine, "date", "time") # wrong types
         self.assertRaises(TypeError, combine, d, "time") # wrong type
         self.assertRaises(TypeError, combine, "date", t) # wrong type
 
+        # tzinfo= argument
+        dt = combine(d, t, timezone.utc)
+        self.assertIs(dt.tzinfo, timezone.utc)
+        dt = combine(d, t, tzinfo=timezone.utc)
+        self.assertIs(dt.tzinfo, timezone.utc)
+        t = time()
+        dt = combine(dt, t)
+        self.assertEqual(dt.date(), d)
+        self.assertEqual(dt.time(), t)
+
     def test_replace(self):
         cls = self.theclass
         args = [1, 2, 3, 4, 5, 6, 7]