Untitled
unknown
typescript
2 years ago
1.1 kB
7
Indexable
// countdown time left
type TTimeLeft = {
days: number;
hours: number;
minutes: number;
seconds: number;
};
const [timeLeft, setTimeLeft] = useState<TTimeLeft>({
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
});
const calculateTimeLeftHandler = (): TTimeLeft => {
const difference =
new Date('2024-02-20T00:00:00').getTime() - new Date().getTime();
let timeLeft: TTimeLeft = {
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
};
if (difference > 0) {
timeLeft = {
days: Math.floor(difference / (1000 * 60 * 60 * 24)),
hours: Math.floor(
(difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60),
),
minutes: Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)),
seconds: Math.floor((difference % (1000 * 60)) / 1000),
};
}
return timeLeft;
};
useEffect(() => {
const timer = setInterval(() => {
setTimeLeft(calculateTimeLeftHandler());
}, 1000);
return () => clearInterval(timer);
}, []);Editor is loading...
Leave a Comment