import React, { useEffect, useState } from "react"; interface CountdownProps { targetDate: string; } const Countdown: React.FC = ({ targetDate }) => { const calculateTimeLeft = () => { const difference = new Date(targetDate).getTime() - new Date().getTime(); let timeLeft = { days: "0", hours: "0", minutes: "0", seconds: "0", }; if (difference > 0) { timeLeft = { days: Math.floor(difference / (1000 * 60 * 60 * 24)).toString(), hours: Math.floor( (difference / (1000 * 60 * 60)) % 24, ).toString(), minutes: Math.floor((difference / 1000 / 60) % 60).toString(), seconds: Math.floor((difference / 1000) % 60).toString(), }; } return timeLeft; }; const [timeLeft, setTimeLeft] = useState({ days: "--", hours: "--", minutes: "--", seconds: "--", }); useEffect(() => { setTimeLeft(calculateTimeLeft()); const timer = setInterval(() => { setTimeLeft(calculateTimeLeft()); }, 1000); return () => clearInterval(timer); }, [targetDate]); return (
{timeLeft.days}
Days
{timeLeft.hours}
Hours
{timeLeft.minutes}
Minutes
{timeLeft.seconds}
Seconds
); }; export default Countdown;