@@ -4,14 +4,38 @@ import { useState, useEffect, useRef } from 'react';
44
55export default function useTime ( settings ) {
66 const { format } = settings || { } ;
7+
78 const [ seconds , setSeconds ] = useState ( 0 ) ;
89 const [ minutes , setMinutes ] = useState ( 0 ) ;
910 const [ hours , setHours ] = useState ( 0 ) ;
1011 const [ ampm , setAmPm ] = useState ( '' ) ;
11-
1212 const intervalRef = useRef ( ) ;
13+
14+ function formatHours ( hoursValue ) {
15+ if ( format === '12-hour' ) {
16+ const ampmValue = hoursValue >= 12 ? 'pm' : 'am' ;
17+ let formattedHours = hoursValue % 12 ;
18+ formattedHours = formattedHours || 12 ;
19+ return { hoursValue : formattedHours , ampmValue } ;
20+ }
21+ return { hoursValue, ampmValue : '' } ;
22+ }
23+
24+ function setCurrentTime ( ) {
25+ const now = new Date ( ) ;
26+ const secondsValue = now . getSeconds ( ) ;
27+ const minutesValue = now . getMinutes ( ) ;
28+ const { hoursValue, ampmValue } = formatHours ( now . getHours ( ) ) ;
29+
30+ setSeconds ( secondsValue ) ;
31+ setMinutes ( minutesValue ) ;
32+ setHours ( hoursValue ) ;
33+ setAmPm ( ampmValue ) ;
34+ }
35+
36+
1337 function start ( ) {
14- if ( ! intervalRef . current ) {
38+ if ( ! intervalRef . current ) {
1539 setCurrentTime ( ) ;
1640 intervalRef . current = setInterval ( ( ) => setCurrentTime ( ) , 1000 ) ;
1741 }
@@ -28,36 +52,14 @@ export default function useTime(settings) {
2852 setAmPm ( '' ) ;
2953 }
3054
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-
5555 // didMount effect
5656 useEffect ( ( ) => {
5757 start ( ) ;
5858 return reset ;
59- } , [ ] ) ;
59+ } , [ ] ) ;
6060
6161
62- return { seconds, minutes, hours, ampm } ;
62+ return {
63+ seconds, minutes, hours, ampm,
64+ } ;
6365}
0 commit comments