Jo det är inga konstigheter. Enklast är väl att ta ankomsttiden (eller senaste matningstiden i efterföljande fall), lägga på tre timmar och se om det är under eller lika med nu. Man kan göra det på olika sätt, men kolla datetime och de olika metoder som finns.
Det finns en del komplexiteter med att jobba med datum, som tidszoner, sommartid och så, men mycket av det är ju löst om man använder datetime och inte försöker snickra ihop något eget, och man slipper förstås fundera på tidszon och så om man inte tar tid som en input utan sätter den själv. Jag har stött på problem på grund av att någon typ bara använde tiden och inte datumet eller liknande, 00:00:01 är ju väldigt mycket mindre än 23:59:59 även om du kommer dit genom att lägga på två sekunder på det senare, så använd datetime helt enkelt.
Sen är det ju bra för testning att ha en timeprovider som ger tiden istället för att använda systemklockan. Då kan man injicera en klocka som bara går när man själv vill det, men på den här nivån kanske enhetstester inte är så viktigt.