-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuseDateTime.js
62 lines (51 loc) · 2.02 KB
/
useDateTime.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
// hooks/useDateTime.js
import { useState, useEffect } from 'react';
/**
* Hook personnalisé pour gérer et formater la date et l'heure actuelles.
*
* @returns {Object} Un objet contenant les propriétés suivantes :
* - `currentDateFormatted` {string} : La date actuelle formatée sous forme de chaîne.
* - `timeFormatted` {string} : L'heure actuelle formatée sous forme de chaîne.
*/
const useDateTime = () => {
// État pour stocker la date formatée actuelle
const [currentDateFormatted, setCurrentDateFormatted] = useState('')
// État pour stocker l'heure formatée actuelle
const [timeFormatted, setTimeFormatted] = useState('')
useEffect(() => {
/**
* Met à jour la date et l'heure formatées.
*/
const updateDateTime = () => {
const now = new Date()
// Options pour le formatage de la date
const dateOptions = {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long'
}
// Options pour le formatage de l'heure
const timeOptions = {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
}
// Mise à jour de la date formatée
setCurrentDateFormatted(now.toLocaleDateString('eng-US', dateOptions))
// Mise à jour de l'heure formatée
setTimeFormatted(now.toLocaleTimeString('eng-US', timeOptions))
}
// Appel initial pour définir les valeurs immédiatement
updateDateTime()
// Mise à jour chaque seconde
const intervalId = setInterval(updateDateTime, 5000)
// Nettoyage : suppression de l'intervalle lorsque le composant est démonté
return () => clearInterval(intervalId)
}, []) // Le tableau de dépendances est vide pour exécuter l'effet uniquement au montage
return {
currentDateFormatted,
timeFormatted
}
}
export default useDateTime;