How to make a part cancollide = false after a specific time?

So I have this door (part) that I want it to open (cancollide = false) at a specific time every day (for example 5 PM EST every day, the door would be open for 10 minutes and then it closes and re-open when its 5 PM EST the next day)

How can I make such a script?

if os.date("%H") == "17" then
    -- some code
end

Grab the Time from EST using os.date() formatted under UTC Time, and Subtract by 4 - 5 Hours. EST is Formatted under UTC-5 which means that it’s 5 hours Behind UTC Time.

os.date("!*t")
-- This will return the Date formatted under UTC Time
-- The Exclamation Point [ ! ] will format under UTC Time
-- We can then add another Format along with it known as %H
-- which grabs the Hour
-- That means we can further Simplify our Code to look like this
-- Which gets the Hour under UTC Time:
os.date("!%H")
------------------------------------------------------------------------

local utcOffset = -5
-- this is to Apply an Offset to the Actual UTC Time accordingly
-- can be applied both Positive and Negative
-- Modulo ( % ) should make sure that you have the Accurate Hour

local hour = (os.date("!%H") + math.round(utcOffset)) % 24
-- adds UTC Time with the Corresponding Offset
-- if the Number is less than 0 or more than 23, Modulo will
-- Reset the Number Accordingly
-- (-1 % 24 = 23) (24 % 24 = 0) (25 % 24 = 1)

You can then check if the Hour is equal to 17, Which under a 12 Hour Clock means 5 PM as 12 + 5 = 17.
IF Its Equal to that Amount, you can Start a Timer with RunService using DeltaTime to check when to stop the Time, for Example:

-- After Checking if the Time is a certain Amount
local CurrentTime = 0 -- To Keep track of the Time
local Duration = (10)*60 -- This should equal to 10 minutes, or 600 seconds
local IsOpen = true -- to check if the Location is open
RunService.Heartbeat:Connect(function(DeltaTime)
    CurrentTime = math.min(Duration, CurrentTime + DeltaTime)
    -- DeltaTime is essentially the Difference in Time
    -- Heartbeat will run based on your FPS, and DeltaTime will
    -- give you the Difference in time between frames
    -- Which when added up, should equal to roughly 1 second everytime
    -- math.min is to ensure that we reach this Time, and gone go over it
    -- math.min looks for the smallest number, overtime the CurrentTime will add
    -- add up to be bigger than the Duration, it will then return the Duration
    -- meaning the Time has been reached.
    
    if CurrentTime == Duration then -- if the Time has been reached
        IsOpen = false -- Place is Closed
    end
end)