Tracks
/
C#
C#
/
Übungen
/
Der Schönheitssalon wird international
Der Schönheitssalon wird international

Der Schönheitssalon wird international

Lernübung

Einführung

Zeit

Das Konzept Zeit wird in .NET mithilfe der DateTime-Struktur behandelt. Es gibt Routinen, um zwischen lokaler Zeit und UTC umzurechnen. Mit TimeSpan lassen sich arithmetische Operationen durchführen.

Zeitzone

Die Klasse TimeZoneInfo bietet Routinen für den Umgang mit den Unterschieden zwischen Zeitzonen. Außerdem enthält sie Methoden, die den Umgang mit der Sommerzeit erleichtern.

Die Klasse CultureInfo unterstützt gebietsschemaabhängige Datums- und Zeitformate.

Um plattformübergreifende Programmierung zu unterstützen, kannst du mit der Klasse RuntimeInformation erkennen, auf welchem Betriebssystem dein Code läuft: Linux, Windows oder OSX.

Anleitung

In dieser Übung bist du zurück in der Welt der Salons (zuerst vorgestellt in der Übung datetimes). Wie bei einigen deiner Projekte hat ein weiterer deiner Kunden großen Erfolg gehabt und neben seinem Standort in New York auch Filialen in London und Paris eröffnet.

1. Gib den Administratoren lokale Zeitangaben für UTC-Termine (Koordinierte Weltzeit) an

Implementiere die statische Methode Appointment.ShowLocalTime(), die eine UTC-Zeit entgegennimmt und sie als lokale Zeit zurückgibt

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

2. Vereinbare Termine in New York, London und Paris

Die Salons sind dafür verantwortlich, ihre eigenen Termine anzunehmen. Die eingegebene Zeit bezieht sich auf den Standort des Salons. Wenn zum Beispiel jemand für einen Termin im New Yorker Salon die Zeit 13:45 eingibt, würde man erwarten, dass die Kundin kurz nach dem Mittagessen auftaucht. Wenn jemand für den Londoner Salon die Zeit 13:45 eingäbe, würde man ebenfalls erwarten, dass die Kundin kurz nach dem Mittagessen eintrifft.

Es hilft dir zu wissen, wie die Zeitzonen-ID für New York, London und Paris lautet.

Auf dem Mac (OSX) und Linux sind das:

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

Unter Windows sind es:

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

Implementiere die statische Überladung Appointment.Schedule(), die einen Standort und einen Zeit-String entgegennimmt und die UTC-Zeit des Termins zurückgibt.

Die Implementierung von Schedule() muss es dem Code ermöglichen, nach dem Bauen unter Linux, Windows und Mac zu laufen. Das ist die erste Übung, in der du dich um das Betriebssystem kümmern musst. Es wird notwendig sein, getrennte Codepfade zu haben, um den Unterschied bei den Zeitzonen-IDs wie oben beschrieben zu berücksichtigen.

Die eingegebenen Datums- und Zeit-Strings sind garantiert gültig.

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

3. Sende den Kunden in Intervallen vor dem Termin Benachrichtigungen

Implementiere die statische Methode Appointment.GetAlertTime(), um Benachrichtigungen 1 Tag (early), 1 Stunde 45 Minuten (standard) und 30 Minuten (late) vor dem Termin zu senden.

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

4. Wenn sich die Sommerzeit kürzlich geändert hat, senden wir den Kunden eine Erinnerung.

Implementiere die statische Methode Appointment.HasDaylightSavingChanged(), die true zurückgibt, wenn die Sommerzeit in den letzten 7 Tagen aktiv oder inaktiv geworden ist.

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

5. Verwende das lokale Datums- und Zeitformat, um Termine einzugeben

Damit Termine in einem Format vereinbart werden können, das dem lokalen Personal vertraut ist, wurdest du damit beauftragt, eine experimentelle Routine zu erstellen, mit der Datum und Uhrzeit im Standardformat für den Standort des Salons eingegeben werden können.

Implementiere die Methode Appointment.NormalizeDateTime(), die einen wohlgeformten Datums- und Zeit-String in einem für den Standort passenden Format entgegennimmt und ihn in ein DateTime-Objekt umwandelt. Es wird nicht versucht, das Datum und die Uhrzeit in UTC umzuwandeln.

Wenn ein ungültiges Format eingegeben wird, sollte ein DateTime mit dem Wert 1/1/1 zurückgegeben werden.

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}
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Der Schönheitssalon wird international zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.