43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
/**
|
|
* Utilitaires pour la gestion des dates
|
|
* Gère correctement les conversions entre heure locale et UTC
|
|
*/
|
|
|
|
/**
|
|
* Convertit une chaîne datetime-local (format: "2025-01-15T14:30") en Date
|
|
* en préservant l'heure locale (pas de conversion UTC)
|
|
*/
|
|
export function parseLocalDateTime(dateTimeString: string): Date {
|
|
if (!dateTimeString) {
|
|
throw new Error('Date string is required');
|
|
}
|
|
|
|
// 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;
|
|
|
|
// Créer la date en heure locale
|
|
const date = new Date(normalized);
|
|
|
|
// Vérifier que la date est valide
|
|
if (isNaN(date.getTime())) {
|
|
throw new Error(`Invalid date string: ${dateTimeString}`);
|
|
}
|
|
|
|
return date;
|
|
}
|
|
|
|
/**
|
|
* Formate une Date en chaîne datetime-local pour les inputs HTML
|
|
* Format: "YYYY-MM-DDTHH:mm"
|
|
*/
|
|
export function formatToLocalDateTime(date: Date): string {
|
|
const year = date.getFullYear();
|
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
const day = String(date.getDate()).padStart(2, '0');
|
|
const hours = String(date.getHours()).padStart(2, '0');
|
|
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
|
|
return `${year}-${month}-${day}T${hours}:${minutes}`;
|
|
}
|