Checkpoint: Correction complète et définitive du décalage horaire. Toutes les fonctions de formatage de dates ont été réécrites pour parser manuellement les chaînes MySQL sans passer par new Date() qui provoquait des conversions UTC. Les corrections incluent : parseLocalDateTime côté serveur, safeFormatDate dans le formulaire d'édition, formatDate dans AdminSequences, Inscription et AdminSequenceInscrits. L'heure saisie correspond désormais exactement à l'heure affichée partout dans l'application.

This commit is contained in:
Manus Sandbox
2025-11-13 03:23:12 -05:00
parent fedfcc59a4
commit 0b83cbd8cd
4 changed files with 85 additions and 21 deletions

View File

@@ -109,8 +109,35 @@ export default function Inscription() {
});
}, [sequences]);
const formatDate = (date: Date | string) => {
return format(new Date(date), "EEEE d MMMM yyyy 'à' HH:mm", { locale: fr });
const formatDate = (dateValue: Date | string) => {
if (!dateValue) return "N/A";
try {
// Parser la date MySQL sans conversion UTC
const dateStr = String(dateValue);
const match = dateStr.match(/(\d{4})-(\d{2})-(\d{2})[T ]?(\d{2}):(\d{2})/);
if (!match) {
console.warn('Format de date non reconnu:', dateValue);
return "N/A";
}
const [, year, month, day, hours, minutes] = match;
// Créer une Date en heure locale pour le formatage avec date-fns
const localDate = new Date(
parseInt(year),
parseInt(month) - 1,
parseInt(day),
parseInt(hours),
parseInt(minutes)
);
return format(localDate, "EEEE d MMMM yyyy 'à' HH:mm", { locale: fr });
} catch (error) {
console.error('Erreur de formatage de date:', error, dateValue);
return "N/A";
}
};
if (loadingFormation || loadingSessions) {