Travailler avec les dates et l'heure en TypeScript : de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi travailler avec les dates en TypeScript nécessite une attention particulière

\n\n

Travailler avec les dates et l'heure est l'une des tâches les plus courantes et pourtant les plus délicates en développement web. En TypeScript, qui est une surcouche strictement typée de JavaScript, l'objet Date a hérité de tous les "charmes" de son prédécesseur : des mois non intuitifs (comptage à partir de zéro), la mutabilité des méthodes et des problèmes de fuseaux horaires. Cependant, en utilisant un typage strict et des bibliothèques modernes, vous pouvez écrire un code sûr, prévisible et lisible pour travailler avec le temps.

\n\n

Dans cet article, nous allons aborder tout ce qu'un développeur doit savoir : de la création de base des dates à la gestion avancée des fuseaux horaires et du formatage. Vous apprendrez à éviter les erreurs typiques et quels outils (intégrés ou tiers) conviennent le mieux aux projets TypeScript.

\n\n

1. Les bases : L'objet Date et son typage en TypeScript

\n\n

Création et méthodes de base

\n\n

En TypeScript, comme en JavaScript, l'objet intégré Date est utilisé pour travailler avec les dates. TypeScript fournit des types prêts à l'emploi, donc aucune définition supplémentaire n'est nécessaire.

\n\n
// Création de la date actuelle\nconst now: Date = new Date();\nconsole.log(now); // 2024-01-15T10:30:00.000Z\n\n// Création à partir d'une chaîne (ISO 8601)\nconst specificDate: Date = new Date('2024-12-31T23:59:59');\n\n// Création à partir de composants (année, mois [0-11], jour, heures...)\nconst birthday: Date = new Date(1990, 0, 15); // 15 janvier 1990\n// Attention : le mois 0 = Janvier !
\n\n

Le problème de la mutabilité

\n\n

Les méthodes de l'objet Date modifient l'objet d'origine. Cela peut entraîner des bugs inattendus. TypeScript ne peut pas l'empêcher au niveau des types, mais vous pouvez utiliser des approches immuables.

\n\n
const date = new Date('2024-01-01');\ndate.setDate(date.getDate() + 5); // mutation ! date est maintenant le 6 janvier\n// Mieux vaut créer un nouvel objet :\nconst newDate = new Date(date.getTime() + 5 * 24 * 60 * 60 * 1000);
\n\n

Typage du timestamp Unix

\n\n

Les dates sont souvent transmises sous forme de nombres (millisecondes depuis 1970). Utilisez un alias de type pour plus de clarté :

\n\n
type UnixTimestamp = number;\n\nfunction formatTimestamp(ts: UnixTimestamp): string {\n  return new Date(ts).toISOString();\n}\n\nconst myTimestamp: UnixTimestamp = 1705315200000;\nconsole.log(formatTimestamp(myTimestamp));
\n\n

2. Formatage et parsing des dates

\n\n

Méthodes de formatage intégrées

\n\n

JavaScript fournit des méthodes de base pour l'affichage localisé. En TypeScript, elles fonctionnent "prêtes à l'emploi" :

\n\n
const date = new Date('2024-06-15T14:30:00');\n\n// Chaînes localisées\nconsole.log(date.toLocaleDateString('ru-RU')); // "15.06.2024"\nconsole.log(date.toLocaleTimeString('en-US')); // "2:30:00 PM"\nconsole.log(date.toLocaleString('de-DE'));     // "15.6.2024, 14:30:00"\n\n// Chaîne ISO (pratique pour les API)\nconsole.log(date.toISOString()); // "2024-06-15T11:30:00.000Z" (toujours UTC)
\n\n

Parsing de chaînes : dangers

\n\n

Le parsing de chaînes via le constructeur new Date(str) peut donner des résultats inattendus dans différents navigateurs. Il est préférable d'utiliser Date.parse() avec une vérification explicite ou des bibliothèques tierces.

\n\n
// Méthode peu fiable\nconst parsed = new Date('2024/01/15'); // peut fonctionner de manière instable\n\n// Méthode fiable : ISO 8601\nconst safeParse = (dateStr: string): Date | null => {\n  const ts = Date.parse(dateStr);\n  return isNaN(ts) ? null : new Date(ts);\n};\n\nconst result = safeParse('2024-01-15T10:00:00Z');\nif (result) {\n  console.log(result.toISOString());\n}
\n\n

3. Manipulations avancées et comparaison

\n\n

Comparaison de dates

\n\n

Les dates peuvent être comparées directement via les opérateurs de comparaison, mais pour une comparaison précise (égalité), il faut les convertir en nombre :

\n\n
const date1 = new Date('2024-01-01');\nconst date2 = new Date('2024-01-0                

Blogs

Book Recommendations