11import { useState , useEffect , useRef } from 'react' ;
22
3- /* ---------------------- useTime --------------------- */
4-
53export default function useTime ( settings ) {
64 const { format } = settings || { } ;
5+
76 const [ seconds , setSeconds ] = useState ( 0 ) ;
87 const [ minutes , setMinutes ] = useState ( 0 ) ;
98 const [ hours , setHours ] = useState ( 0 ) ;
109 const [ ampm , setAmPm ] = useState ( '' ) ;
11-
1210 const intervalRef = useRef ( ) ;
11+
12+ function formatHours ( hoursValue ) {
13+ if ( format === '12-hour' ) {
14+ const ampmValue = hoursValue >= 12 ? 'pm' : 'am' ;
15+ let formattedHours = hoursValue % 12 ;
16+ formattedHours = formattedHours || 12 ;
17+ return { hoursValue : formattedHours , ampmValue } ;
18+ }
19+ return { hoursValue, ampmValue : '' } ;
20+ }
21+
22+ function setCurrentTime ( ) {
23+ const now = new Date ( ) ;
24+ const secondsValue = now . getSeconds ( ) ;
25+ const minutesValue = now . getMinutes ( ) ;
26+ const { hoursValue, ampmValue } = formatHours ( now . getHours ( ) ) ;
27+
28+ setSeconds ( secondsValue ) ;
29+ setMinutes ( minutesValue ) ;
30+ setHours ( hoursValue ) ;
31+ setAmPm ( ampmValue ) ;
32+ }
33+
34+
1335 function start ( ) {
14- if ( ! intervalRef . current ) {
36+ if ( ! intervalRef . current ) {
1537 setCurrentTime ( ) ;
1638 intervalRef . current = setInterval ( ( ) => setCurrentTime ( ) , 1000 ) ;
1739 }
@@ -28,36 +50,14 @@ export default function useTime(settings) {
2850 setAmPm ( '' ) ;
2951 }
3052
31- function formatHours ( hours ) {
32- if ( format === '12-hour' ) {
33- const ampm = hours >= 12 ? 'pm' : 'am' ;
34- var formattedHours = hours % 12 ;
35- formattedHours = formattedHours || 12 ;
36- return { hours : formattedHours , ampm } ;
37- }
38- return { hours, ampm : '' } ;
39- }
40-
41-
42- function setCurrentTime ( ) {
43- var now = new Date ( ) ;
44- const seconds = now . getSeconds ( ) ;
45- const minutes = now . getMinutes ( ) ;
46- const { hours, ampm } = formatHours ( now . getHours ( ) ) ;
47-
48-
49- setSeconds ( seconds ) ;
50- setMinutes ( minutes ) ;
51- setHours ( hours ) ;
52- setAmPm ( ampm ) ;
53- }
54-
5553 // didMount effect
5654 useEffect ( ( ) => {
5755 start ( ) ;
5856 return reset ;
59- } , [ ] ) ;
57+ } , [ ] ) ;
6058
6159
62- return { seconds, minutes, hours, ampm } ;
60+ return {
61+ seconds, minutes, hours, ampm,
62+ } ;
6363}
0 commit comments