Checkpoint: Correction définitive du décalage horaire : parseLocalDateTime retourne maintenant directement une chaîne au format MySQL "YYYY-MM-DD HH:mm:ss" au lieu d'un objet Date JavaScript. Cela évite toute conversion UTC automatique lors de l'insertion en base de données. L'heure saisie (par exemple 09:48) est maintenant stockée et affichée exactement telle quelle sans décalage.
This commit is contained in:
@@ -4,17 +4,16 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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
|
||||
* Convertit une chaîne datetime-local (format: "2025-01-15T14:30") en chaîne MySQL
|
||||
* Format de sortie: "YYYY-MM-DD HH:mm:ss"
|
||||
* Préserve l'heure locale sans aucune conversion UTC
|
||||
*/
|
||||
export function parseLocalDateTime(dateTimeString: string): Date {
|
||||
export function parseLocalDateTime(dateTimeString: string): string {
|
||||
if (!dateTimeString) {
|
||||
throw new Error('Date string is required');
|
||||
}
|
||||
|
||||
// Le format datetime-local est "YYYY-MM-DDTHH:mm"
|
||||
// Parser manuellement pour éviter les conversions UTC
|
||||
const match = dateTimeString.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
|
||||
|
||||
if (!match) {
|
||||
@@ -23,24 +22,9 @@ export function parseLocalDateTime(dateTimeString: string): Date {
|
||||
|
||||
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())) {
|
||||
throw new Error(`Invalid date string: ${dateTimeString}`);
|
||||
}
|
||||
|
||||
return date;
|
||||
// Retourner directement au format MySQL sans passer par un objet Date
|
||||
// Cela évite toute conversion de fuseau horaire
|
||||
return `${year}-${month}-${day} ${hours}:${minutes}:00`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user