import React, { useState, useEffect } from "react"; interface CountdownTimerProps { targetDate: Date; } const CountdownTimer: React.FC = ({ targetDate }) => { const [timeLeft, setTimeLeft] = useState({ days: 0, hours: 0, minutes: 0, seconds: 0, }); useEffect(() => { const timer = setInterval(() => { const now = new Date(); const difference = targetDate.getTime() - now.getTime(); if (difference > 0) { const days = Math.floor(difference / (1000 * 60 * 60 * 24)); const hours = Math.floor((difference / (1000 * 60 * 60)) % 24); const minutes = Math.floor((difference / 1000 / 60) % 60); const seconds = Math.floor((difference / 1000) % 60); setTimeLeft({ days, hours, minutes, seconds }); } else { clearInterval(timer); } }, 1000); return () => clearInterval(timer); }, [targetDate]); const formatTime = (time: number): string => { return time.toString().padStart(2, "0"); }; return (
{formatTime(timeLeft.days)}
:
{formatTime(timeLeft.hours)}
:
{formatTime(timeLeft.minutes)}
:
{formatTime(timeLeft.seconds)}
{timeLeft.days} {timeLeft.days === 1 ? " day" : " days"} left
); }; export default CountdownTimer;