diff --git a/controllers/meeting.js b/controllers/meeting.js
index 28d5edafc5160b3d212fc5a241cd5831f01f003e..9becfeaeff0c1dba206f565c54a5a8382f714ee0 100644
--- a/controllers/meeting.js
+++ b/controllers/meeting.js
@@ -195,3 +195,19 @@ exports.closeMeeting = async (req, res, next) => {
     return next(error);
   }
 };
+
+exports.confirmTime = async (req, res, next) => {
+  const { meetingId } = req.params;
+  const { adminPassword } = req.body;
+  try {
+    const meeting = await getMeetingById(meetingId);
+    await validatePasswordIsMatched(adminPassword, meeting.adminPassword);
+
+    meeting.confirmedTime = Date.now();
+    await meeting.save();
+
+    return res.json(MeetingResponse.from(meeting));
+  } catch (error) {
+    return next(error);
+  }
+};
diff --git a/routes/meeting.js b/routes/meeting.js
index 956df300ce4eb0d0b4a4444bee35f3c0a6419f9b..d32bd4e17c79b693901b85a84a9129417b2df481 100644
--- a/routes/meeting.js
+++ b/routes/meeting.js
@@ -6,6 +6,7 @@ const {
   getMeetingById,
   getMeetingDetailById,
   closeMeeting,
+  confirmTime,
 } = require('../controllers/meeting');
 
 const router = express.Router();
@@ -20,4 +21,6 @@ router.get('/:meetingId/details', isAuthenticated, getMeetingDetailById);
 
 router.patch('/:meetingId/close', isAuthenticated, closeMeeting);
 
+router.patch('/:meetingId/confirm-time', isAuthenticated, confirmTime);
+
 module.exports = router;