Parcours
/
C#
C#
/
Exercices
/
Le salon de beauté s'exporte à l'international
Le salon de beauté s'exporte à l'international

Le salon de beauté s'exporte à l'international

Exercice d'apprentissage

Introduction

Temps

En .NET, le concept de temps est traité à l'aide de la structure DateTime. Il existe des routines pour convertir entre l'heure locale et UTC. On peut effectuer des calculs arithmétiques à l'aide de TimeSpan.

Fuseau horaire

La classe TimeZoneInfo fournit des routines pour gérer les différences entre les fuseaux horaires. La classe TimeZoneInfo contient aussi des méthodes qui facilitent la gestion de l'heure d'été.

La classe CultureInfo prend en charge les formats de date et d'heure qui dépendent de la locale.

Pour permettre le développement multiplateforme, la classe RuntimeInformation permet de détecter sur quel système d'exploitation le code s'exécute : Linux, Windows ou OSX.

Instructions

Dans cet exercice, tu retrouves l'univers des salons (introduits pour la première fois dans l'exercice datetimes). Comme pour un certain nombre de tes projets, un autre de tes clients a connu un grand succès et a ouvert des succursales à Londres et à Paris, en plus de son siège de New York.

1. Fournis aux administrateurs l'équivalent en heure locale des rendez-vous exprimés en UTC (temps universel coordonné)

Implémente la méthode statique Appointment.ShowLocalTime() qui prend une heure UTC et la renvoie sous forme d'heure locale

// For a student in NY
Appointment.ShowLocalTime(new DateTime(2030, 7, 25, 13, 45, 0));
// => {2030, 7, 25, 8, 45, 0}

2. Planifie des rendez-vous à New York, Londres et Paris

Chaque salon est responsable de ses propres réservations. L'heure saisie est locale au lieu où se trouve le salon. Par exemple, si quelqu'un saisit une heure de 13:45 pour un rendez-vous au salon de New York, il s'attend à ce que le client arrive juste après le déjeuner. De même, si quelqu'un saisissait une heure de 13:45 pour le salon de Londres, il s'attendrait aussi à ce que le client arrive juste après le déjeuner.

Il te sera utile de connaître l'identifiant de fuseau horaire de New York, Londres et Paris.

Sur Mac (OSX) et Linux, ce sont :

  • New York - America/New_York
  • London - Europe/London
  • Paris - Europe/Paris

Sur Windows, ce sont :

  • New York - Eastern Standard Time
  • London - GMT Standard Time
  • Paris - W. Europe Standard Time

Implémente la surcharge statique Appointment.Schedule() qui prend une chaîne de lieu et une chaîne d'heure et renvoie l'heure UTC du rendez-vous.

Une fois compilée, l'implémentation de Schedule() devra pouvoir être exécutée sur Linux, Windows et Mac. C'est le premier exercice où tu dois te soucier du système d'exploitation. Il sera nécessaire de prévoir des chemins de code distincts pour tenir compte de la différence entre les identifiants de fuseau horaire décrite ci-dessus.

Les chaînes de date et d'heure saisies sont garanties valides.

Appointment.Schedule("7/25/2030 13:45:00", Location.Paris);
// => {2030, 7, 25, 11, 45, 0}

3. Envoie des alertes aux clients à intervalles avant le rendez-vous

Implémente la méthode statique Appointment.GetAlertTime() pour envoyer des alertes 1 jour (early), 1 heure 45 minutes (standard) et 30 minutes (late) avant le rendez-vous.

Appointment.GetAlertTime(new DateTime(2030, 7, 25, 14, 45, 0), AlertLevel.Early);
// => {2030, 7, 24, 14, 45, 0}

4. Si l'heure d'été a récemment changé, on envoie un message de rappel aux clients.

Implémente la méthode statique Appointment.HasDaylightSavingChanged() pour renvoyer true si l'heure d'été est devenue active ou inactive au cours des 7 derniers jours.

Appointment.HasDaylightSavingChanged(new DateTime(2020, 3, 30, 14, 45, 0), Location.London);
// => true

5. Utilise le format de date et d'heure local pour saisir les rendez-vous

Pour que les rendez-vous puissent être pris dans un format familier au personnel local, on t'a chargé de créer une routine expérimentale permettant de saisir les dates et les heures dans le format par défaut du lieu où se trouve le salon.

Implémente la méthode Appointment.NormalizeDateTime() qui prend une chaîne de date et d'heure bien formée, dans un format adapté au lieu, et la convertit en un objet DateTime. Aucune tentative n'est faite pour convertir la date et l'heure en UTC.

Si un format incorrect est saisi, il faut renvoyer un DateTime avec la valeur 1/1/1.

Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.London);
// => {2019, 11, 25, 13, 45, 0}
Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.NewYork);
// => {1, 1, 1, 0, 0, 0}
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Le salon de beauté s'exporte à l'international ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.