Checkpoint: Correction du décalage horaire dans la gestion des séquences - Utilisation des méthodes UTC (getUTCHours, getUTCMinutes, etc.) pour l'affichage des dates et conversion locale vers UTC lors de l'envoi au serveur. Les heures saisies (ex: 9h00) sont maintenant correctement enregistrées et affichées.

This commit is contained in:
Manus Sandbox
2025-11-27 04:17:13 -05:00
parent 46f8a6bcfd
commit 6f6d7e8f7f
2 changed files with 28 additions and 7 deletions

View File

@@ -106,11 +106,12 @@ export default function AdminSequences() {
try { try {
// Si c'est un objet Date JavaScript // Si c'est un objet Date JavaScript
if (dateValue instanceof Date) { if (dateValue instanceof Date) {
const year = dateValue.getFullYear(); // Utiliser les méthodes UTC pour éviter le décalage horaire
const month = String(dateValue.getMonth() + 1).padStart(2, '0'); const year = dateValue.getUTCFullYear();
const day = String(dateValue.getDate()).padStart(2, '0'); const month = String(dateValue.getUTCMonth() + 1).padStart(2, '0');
const hours = String(dateValue.getHours()).padStart(2, '0'); const day = String(dateValue.getUTCDate()).padStart(2, '0');
const minutes = String(dateValue.getMinutes()).padStart(2, '0'); const hours = String(dateValue.getUTCHours()).padStart(2, '0');
const minutes = String(dateValue.getUTCMinutes()).padStart(2, '0');
return `${year}-${month}-${day}T${hours}:${minutes}`; return `${year}-${month}-${day}T${hours}:${minutes}`;
} }
@@ -154,6 +155,15 @@ export default function AdminSequences() {
setIsEditOpen(true); setIsEditOpen(true);
}; };
// Convertir une date locale (datetime-local) en ISO UTC
const convertLocalToUTC = (localDateStr: string): string => {
if (!localDateStr) return localDateStr;
// datetime-local retourne "YYYY-MM-DDTHH:mm"
// On doit le traiter comme heure locale et le convertir en UTC
const localDate = new Date(localDateStr);
return localDate.toISOString();
};
const handleSubmit = (e: React.FormEvent) => { const handleSubmit = (e: React.FormEvent) => {
e.preventDefault(); e.preventDefault();
@@ -168,10 +178,14 @@ export default function AdminSequences() {
lieu: formData.lieu, lieu: formData.lieu,
publicCible: formData.publicCible, publicCible: formData.publicCible,
capaciteMax: parseInt(formData.capaciteMax), capaciteMax: parseInt(formData.capaciteMax),
dateBlocage: formData.dateBlocage, dateBlocage: convertLocalToUTC(formData.dateBlocage),
statut: formData.statut, statut: formData.statut,
formateurId: formData.formateur ? parseInt(formData.formateur) : null, formateurId: formData.formateur ? parseInt(formData.formateur) : null,
dates: formData.dates, dates: formData.dates.map(d => ({
...d,
dateDebut: convertLocalToUTC(d.dateDebut),
dateFin: convertLocalToUTC(d.dateFin),
})),
}; };
if (editingSequence) { if (editingSequence) {

View File

@@ -684,3 +684,10 @@
- [x] Vérifier si l'erreur vient de la création ou de la recherche dans la map (problème de récupération ID) - [x] Vérifier si l'erreur vient de la création ou de la recherche dans la map (problème de récupération ID)
- [x] Corriger le problème identifié (utilisation de $returningId() pour formations et séquences, ajout ordre pour dates) - [x] Corriger le problème identifié (utilisation de $returningId() pour formations et séquences, ajout ordre pour dates)
- [x] Tester l'import et valider que tout fonctionne - [x] Tester l'import et valider que tout fonctionne
## Bug décalage horaire - Heures de séquences
- [x] Identifier où se produit le décalage horaire (+1h) (conversion locale vs UTC)
- [x] Vérifier la gestion des fuseaux horaires dans le formulaire
- [x] Corriger la conversion des dates/heures (UTC pour affichage et envoi)
- [x] Tester la saisie et l'affichage des heures