Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,128 Bytes
81e0b0c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import { useState, useRef, useEffect } from "react";
export const useTimer = () => {
const [elapsedTime, setElapsedTime] = useState(0);
const timerIntervalRef = useRef(null);
const startTimeRef = useRef(null);
const startTimer = () => {
startTimeRef.current = Date.now();
timerIntervalRef.current = setInterval(() => {
const timeElapsed = Math.floor(
(Date.now() - startTimeRef.current) / 1000
);
setElapsedTime(timeElapsed);
}, 1000);
};
const stopTimer = () => {
if (timerIntervalRef.current) {
clearInterval(timerIntervalRef.current);
}
};
const formatElapsedTime = () => {
const hours = Math.floor(elapsedTime / 3600);
const minutes = Math.floor((elapsedTime % 3600) / 60);
const seconds = elapsedTime % 60;
return [
hours.toString().padStart(2, "0"),
minutes.toString().padStart(2, "0"),
seconds.toString().padStart(2, "0"),
].join(":");
};
useEffect(() => {
startTimer();
return () => {
stopTimer();
};
}, []);
return {
elapsedTime,
formatElapsedTime,
stopTimer,
};
};
|