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:
@@ -6,6 +6,7 @@
|
||||
/**
|
||||
* Convertit une chaîne datetime-local (format: "2025-01-15T14:30") en Date
|
||||
* 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 {
|
||||
if (!dateTimeString) {
|
||||
@@ -13,11 +14,26 @@ export function parseLocalDateTime(dateTimeString: string): Date {
|
||||
}
|
||||
|
||||
// Le format datetime-local est "YYYY-MM-DDTHH:mm"
|
||||
// On ajoute ":00" pour les secondes si nécessaire
|
||||
const normalized = dateTimeString.length === 16 ? `${dateTimeString}:00` : dateTimeString;
|
||||
// Parser manuellement pour éviter les conversions UTC
|
||||
const match = dateTimeString.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
|
||||
|
||||
// Créer la date en heure locale
|
||||
const date = new Date(normalized);
|
||||
if (!match) {
|
||||
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
|
||||
if (isNaN(date.getTime())) {
|
||||
|
||||
2
todo.md
2
todo.md
@@ -103,7 +103,7 @@
|
||||
|
||||
- [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 le décalage d'une heure entre la saisie et l'affichage des dates de séquences
|
||||
|
||||
Reference in New Issue
Block a user