Checkpoint: Correction définitive du décalage horaire lors de l'enregistrement des dates. La fonction parseLocalDateTime parse maintenant manuellement les composants de la date (année, mois, jour, heures, minutes) et construit un objet Date en utilisant le constructeur avec les valeurs locales, évitant ainsi toute conversion UTC automatique. L'heure saisie (ex: 15h00) est désormais correctement enregistrée en base sans décalage.

This commit is contained in:
Manus Sandbox
2025-11-12 12:27:03 -05:00
parent f266e8dde8
commit fedfcc59a4
2 changed files with 21 additions and 5 deletions

View File

@@ -6,6 +6,7 @@
/** /**
* Convertit une chaîne datetime-local (format: "2025-01-15T14:30") en Date * Convertit une chaîne datetime-local (format: "2025-01-15T14:30") en Date
* en préservant l'heure locale (pas de conversion UTC) * en préservant l'heure locale (pas de conversion UTC)
* Retourne une Date construite manuellement pour éviter les conversions de fuseau horaire
*/ */
export function parseLocalDateTime(dateTimeString: string): Date { export function parseLocalDateTime(dateTimeString: string): Date {
if (!dateTimeString) { if (!dateTimeString) {
@@ -13,11 +14,26 @@ export function parseLocalDateTime(dateTimeString: string): Date {
} }
// Le format datetime-local est "YYYY-MM-DDTHH:mm" // Le format datetime-local est "YYYY-MM-DDTHH:mm"
// On ajoute ":00" pour les secondes si nécessaire // Parser manuellement pour éviter les conversions UTC
const normalized = dateTimeString.length === 16 ? `${dateTimeString}:00` : dateTimeString; const match = dateTimeString.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
// Créer la date en heure locale if (!match) {
const date = new Date(normalized); throw new Error(`Invalid date format: ${dateTimeString}. Expected YYYY-MM-DDTHH:mm`);
}
const [, year, month, day, hours, minutes] = match;
// Créer une Date en utilisant le constructeur avec les composants locaux
// Cela évite la conversion UTC automatique
const date = new Date(
parseInt(year),
parseInt(month) - 1, // Les mois commencent à 0 en JavaScript
parseInt(day),
parseInt(hours),
parseInt(minutes),
0, // secondes
0 // millisecondes
);
// Vérifier que la date est valide // Vérifier que la date est valide
if (isNaN(date.getTime())) { if (isNaN(date.getTime())) {

View File

@@ -103,7 +103,7 @@
- [x] Corriger le bug de modification des horaires des séquences - [x] Corriger le bug de modification des horaires des séquences
- [ ] Corriger la modification des heures d'une séquence (amélioration de la gestion d'erreurs en cours) - [x] Corriger le décalage d'une heure lors de l'enregistrement des dates (15h00 saisi devient 16h00 en base)
- [x] Corriger la mise à jour du nombre d'inscrits sur la page d'inscription publique - [x] Corriger la mise à jour du nombre d'inscrits sur la page d'inscription publique
- [x] Corriger le décalage d'une heure entre la saisie et l'affichage des dates de séquences - [x] Corriger le décalage d'une heure entre la saisie et l'affichage des dates de séquences